在linux下,我执行以下操作
COMMAND / home / directory / * .txt
并且该目录中的所有文件都作为单独的参数传递(目录中的20个文件导致argv变量中的20个参数)
在Windows下,相同的命令会生成一个参数(该字符串完全相同)。
这是一个编译器问题(VisualC ++ 2008)还是windows的东西还是什么?
过去,我编写了批处理文件来将文件解析为多个参数,但我希望有更好的方法。
任何帮助将不胜感激
答案 0 :(得分:2)
它比大多数Unix shell更有限,但VC ++包含一个名为setargv.obj
的文件,您可以将其链接到您的应用程序中添加globbing。它支持*
和?
,涵盖了大多数人关心的大部分内容。
要使用它,请在链接文件时包含setargv.obj
。在大多数情况下,这只是意味着将文件名添加到命令行,如下所示:
cl myfile.c myotherfile.c setargv.obj
答案 1 :(得分:0)
确实这是一个shell globbing功能。在PowerShell中,您将使用Convert-Path
(或Resolve-Path)处理函数内的通配符扩展,例如:
function ITakeWildcards([string]$Path) {
$paths = Convert-Path $path
foreach ($aPath in $paths) {
"Processing path $aPath"
}
}