简单批处理循环不工作

时间:2015-02-12 16:39:36

标签: batch-file for-loop

我的目标是将一些* .cdr扩展名的文件转换为目录中的* .ai。这些文件看起来像file_a.cdr。 file_b.cdr ...... 我已经将convert.exe替换为另一个简单的命令,比如copy,所以不要在我的例子中询问这里的含义。

    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!

提前谢谢

2 个答案:

答案 0 :(得分:4)

您不需要变量

for %%f in (*.cdr) do (
    convert "%%f" "%%~nf.ai"
)

或者,如果您尝试从命令行执行此操作,

for %f in (*.cdr) do convert "%f" "%~nf.ai"

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

答案 1 :(得分:0)

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