For循环中的简单批处理不起作用
Simple Batch In For Loop Not Working
我的目标是将目录中一些扩展名为*.cdr 的文件转换为*.ai。这些文件看起来像 file_a.cdr。 file_b.cdr ......
我已经为您将 convert.exe 替换为另一个简单的命令,如复制,所以不要问我示例中的含义。
setlocal enableDelayedExpansion
for %%f in (*.cdr) do (
set "infile=%%f"
set "outfile=%%~nf.ai"
copy "%infile%" "%outfile%"
)
批处理的输出总是不同的!!!!
有时是:
copy "%file_a.cdr" "%file_a.ai" => system cannot find file
或
copy "" "" => system cannot find file
我已经使用过这种语法 copy !infile! !outfile!
现在成功了:
提前致谢
您不需要变量
for %%f in (*.cdr) do (
convert "%%f" "%%~nf.ai"
)
或者,如果您尝试从命令行执行此操作,
for %f in (*.cdr) do convert "%f" "%~nf.ai"
因为在批处理文件中需要转义百分号,但命令行不是这种情况。
使用延迟扩展。并用 ! 包围你的变量而不是 %
我的目标是将目录中一些扩展名为*.cdr 的文件转换为*.ai。这些文件看起来像 file_a.cdr。 file_b.cdr ...... 我已经为您将 convert.exe 替换为另一个简单的命令,如复制,所以不要问我示例中的含义。
setlocal enableDelayedExpansion
for %%f in (*.cdr) do (
set "infile=%%f"
set "outfile=%%~nf.ai"
copy "%infile%" "%outfile%"
)
批处理的输出总是不同的!!!!
有时是:
copy "%file_a.cdr" "%file_a.ai" => system cannot find file
或
copy "" "" => system cannot find file
我已经使用过这种语法 copy !infile! !outfile!
现在成功了:
提前致谢
您不需要变量
for %%f in (*.cdr) do (
convert "%%f" "%%~nf.ai"
)
或者,如果您尝试从命令行执行此操作,
for %f in (*.cdr) do convert "%f" "%~nf.ai"
因为在批处理文件中需要转义百分号,但命令行不是这种情况。
使用延迟扩展。并用 ! 包围你的变量而不是 %