我有一个Windows控制台应用程序,它接受一个文件列表作为参数,每个文件用空格分隔,如MyApp.exe 1.txt 2.txt 3.txt
。我的文件夹除了txt之外还有其他文件格式,但我只对txt文件感兴趣。我想实现像MyApp.exe for %%i in (.\*.txt)
这样的东西。提前谢谢。
答案 0 :(得分:2)
唯一的特点就是你需要启用delayed expansion - 这样做:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
FOR %%I IN (.\*.txt) DO SET files=!files! %%I
MyApp.exe !files!
这将致电:
MyApp.exe .\1.txt .\2.txt .\3.txt
如果您要删除任何路径信息,请使用%%~nxI
代替%%I
:
@ECHO OFF
SETLOCAL EnableDelayedExpansion
FOR %%I IN (.\*.txt) DO SET files=!files! %%~nxI
MyApp.exe !files!
这将导致:
MyApp.exe 1.txt 2.txt 3.txt
请注意a limit on the length of the command:
在运行Microsoft Windows XP或更高版本的计算机上,最大长度 您可以在命令提示符处使用的字符串是8191 字符。