在具有多个具有多个扩展名的文件的批处理文件中使用 FOR



我有三个不同的文件扩展名与命令行程序一起使用。 该程序的语法是program.exe file1.bm file1.pal file1.ppm.

它需要file1.bmfile1.pal并将它们转换为ppm文件。

我试过使用for %%A in (.bm .pal .ppm) do call program.exe %%A,但它不起作用,因为它不能代表所有三个扩展名%%A

如何使用FOR(或替代方法)创建批处理文件以填写上述语法所需的命令?

谢谢

您可以使用for /Fdir /B来获得所需的结果。 首先,我们获取与模式匹配的每个文件(*.bm),检查另一个文件是否存在,然后执行命令。

for /F "tokens=*" %%F IN ('dir /B *.bm') DO (
%== Found a file to work with ==%
if exist "%%~nF.pal" (
%== Validated other file ==%
bm2ppm "%%~F" "%%~nF.pal" "%%~nF.ppm"
)
)

但请注意,如果您的文件名中有特殊字符,则需要使用chcp Codepage调整代码页

如果您不介意以递归方式搜索它,则可以改用for /R %%F IN (*.bm) DO (

请务必浏览for /?dir /?

最新更新