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

For loop 在具有多个扩展名的多个文件的批处理文件中使用,for-loop,cmd,For Loop,Cmd,我有三个不同的文件扩展名,用于命令行程序。此程序的语法为program.exe file1.bm file1.pal file1.ppm 它接受file1.bm和file1.pal并将它们转换为ppm文件 我已尝试在(.bm.pal.ppm)do call program.exe%%A中为%%A使用,但它不起作用,因为%%A不能代表所有三个扩展名 如何使用FOR(或其他选项)创建批处理文件,以填写上述语法所需的命令 谢谢您可以使用for/F和dir/B来获得所需的结果。 首先,我们获取与模式匹配

我有三个不同的文件扩展名,用于命令行程序。此程序的语法为
program.exe file1.bm file1.pal file1.ppm

它接受
file1.bm
file1.pal
并将它们转换为
ppm
文件

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

如何使用
FOR
(或其他选项)创建批处理文件,以填写上述语法所需的命令


谢谢

您可以使用
for/F
dir/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

如果您不介意让它递归搜索,您可以在(*.bm)DO(
中使用
for/R%%F


确保查看
中的/?
目录/?

您可以使用
中的/F
目录/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

如果您不介意让它递归搜索,您可以在(*.bm)DO(
中使用
for/R%%F


确保在
中查找/?
dir/?

(*.bm*.pal*.ppm)
您正在搜索没有名称的文件。这是合法的,但资源管理器不允许您创建这些文件。如果使用路径,则必须在每个文件名之前指定路径。
(C:\*.bm C:\*.pal C:\*.ppm)
。它也与
dir
del
命令一起工作。Windows的文件名位于最后一个点的左侧,扩展名位于最后一个点的右侧。其他点只是名称的一部分,并不特殊。这并不能回答问题。即使我使用每个文件的目录,之后我会使用哪些命令“do call program.exe”一旦找到其中一个文件,需要做什么?我正在尝试在批处理程序中使用通配符来自动执行必须键入每个文件的过程。有数百个*.bm和*.pal文件需要转换为*.ppm。我必须使用“bm2ppm file1.bm file1.pal file1.ppm”语法“将每个文件转换为该ppm格式。如何在批处理文件中完成此操作?这是我的全部要求。
(*.bm*.pal*.ppm)
您正在搜索没有名称的文件。这是合法的,但资源管理器不允许您创建这些文件。如果使用路径,则必须在每个文件名之前指定路径。
(C:\*.bm C:\*.pal C:\*.ppm)
。它也与
dir
del
命令一起工作。Windows的文件名位于最后一个点的左侧,扩展名位于最后一个点的右侧。其他点只是名称的一部分,并不特殊。这并不能回答问题。即使我使用每个文件的目录,之后我会使用哪些命令“do call program.exe”一旦找到其中一个文件,需要做什么?我正在尝试在批处理程序中使用通配符来自动执行必须键入每个文件的过程。有数百个*.bm和*.pal文件需要转换为*.ppm。我必须使用“bm2ppm file1.bm file1.pal file1.ppm”语法“将每个文件转换为ppm格式。如何在批处理文件中实现这一点?这就是我的全部要求。”。