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格式。如何在批处理文件中实现这一点?这就是我的全部要求。”。