C ++通过命令行使用*字符传递多个文件

时间:2014-08-07 01:04:49

标签: c++ linux windows powershell argv

在linux下,我执行以下操作

  
    

COMMAND / home / directory / * .txt

  

并且该目录中的所有文件都作为单独的参数传递(目录中的20个文件导致argv变量中的20个参数)

在Windows下,相同的命令会生成一个参数(该字符串完全相同)。

这是一个编译器问题(VisualC ++ 2008)还是windows的东西还是什么?

过去,我编写了批处理文件来将文件解析为多个参数,但我希望有更好的方法。

任何帮助将不胜感激

2 个答案:

答案 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"
    }
}