我有一个使用MinGW C++编译器构建的应用程序,类似于grep - 命令的工作方式如下:
myapp -e '.*' *.txt
使用-e开关后面的东西是一个正则表达式,紧接着是文件名模式。看起来MinGW会自动扩展(在UNIX术语中称为glob),所以我的正则表达式会被改变。我发现可以通过将全局变量_CRT_glob
设置为零来关闭这种行为。对于Bash和其他明智的shell用户来说,这样做就可以了,因为shell会扩展文件模式。但是,对于MS cmd.exe
用户来说,看起来我需要自己扩展文件模式。
所以我的问题是 - 有没有人知道一个globbing库(或者MinGW的功能)来进行部分命令行扩展?我知道Windows CRT的_setargv特性,但它是扩展整个命令行。请注意,我看过这个问题,但它真的没有解决部分扩展的问题。
最终,我用条件编译编写了自己的Windows应用程序版本的globbing代码。这很容易,因为我有自己的CommandLine类,它封装了main()中的argc和argv。但我很想听听其他解决方案。
.*
,那么问题是什么? - Brian Neal