我有一个Windows控制台应用程序,它接受文件列表作为参数,每个文件由空格分隔,如MyApp.exe 1.txt 2.txt 3.txt
。除了 txt 之外,我的文件夹还有其他文件格式,但我只对 txt 文件感兴趣。我想实现这样的事情MyApp.exe for %%i in (.*.txt)
.提前谢谢。
唯一的特点是你需要启用延迟扩展 - 这样做:
@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
请注意,命令的长度有限制:
在运行 Windows XP 或更高版本Microsoft计算机上,最大长度 可以在命令提示符下使用的字符串是 8191 字符。