【发布时间】:2011-03-07 07:17:21
【问题描述】:
如何在 Windows 中使用命令提示符或 PowerShell 实现此目的?
myprog *
编辑:我想用当前目录中的每个文件作为参数调用 myprog。
【问题讨论】:
标签: command-line powershell cmd
如何在 Windows 中使用命令提示符或 PowerShell 实现此目的?
myprog *
编辑:我想用当前目录中的每个文件作为参数调用 myprog。
【问题讨论】:
标签: command-line powershell cmd
如果您的目标是为目录中的每个文件调用“myprog.exe”,假设“myprog.exe”本身不处理通配符,那么它应该类似于 powershell 中的内容:
dir | % {prog $_.FullName}
编辑:考虑您的评论,试试这个:
prog (get-childItem -name)
希望对你有帮助...
【讨论】:
我将 Cédric Rup 的解决方案封装在一个函数 ea(ExpandAll?)中。虽然不如 Unix 方法干净。
function ea ($p="*") { dir $p | foreach { '"{0}" ' -f $_.Name } }
.\Myprog.exe (ea)
.\Myprog.exe (ea *)
.\Myprog.exe (ea *.txt)
【讨论】:
在 .CMD 或 .BAT 文件中:
SETLOCAL EnableDelayedExpansion
FOR %%f in (*) DO SET params=!params! "%%f"
CALL myprog %params%
SETLOCAL EnableDelayedExpansion 和 !variable! 语法允许您累积结果。 (有关说明和示例,请参阅this page。)
编辑:在 %%f 周围添加引号,并将列表更改为 '*'...见下面的 cmets。
【讨论】:
!params! 括起来以防止文件名中出现空格
%%f 放入引号中。 """"1.txt" 2.txt" 3.txt" 4.txt" 5.txt 的文件列表会有点奇怪。 ewall:使用* 作为通配符就足够了。
您的意思是命令外壳(cmd.exe)中的以下构造:
for %f IN (*.*) DO echo %f
【讨论】: