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"

因为在批处理文件中需要转义百分号,但命令行不是这种情况。

使用延迟扩展。并用 ! 包围你的变量而不是 %