带前缀的循环批处理脚本

时间:2015-01-04 21:21:54

标签: batch-file for-loop

我编写了一个处理一系列文件的批处理脚本,但现在我希望它将输出文件复制到正确的目录中。

for %%f in (closecaption_*.txt) do (
  "%cd%\bin\captioncompiler.exe" "%cd%\%%f"
  copy /y "%cd%\%%f" "Z:\Users\jbzdarkid\"
)
pause

目前,此脚本会将所有.txt文件复制到我的主目录中。但是,我希望它将.dat文件(输出)移动到我的目录中。理想情况下,它只会移动新的.dat文件,即刚刚处理过的文件。

我希望能够做到这样的事情:

for %%f.txt in (closecaption_*.txt) do (
  "%cd%\bin\captioncompiler.exe" "%cd%\%%f.txt"
  copy /y "%cd%\%%f.dat" "Z:\Users\jbzdarkid\"
)
pause

然而这不起作用。

2 个答案:

答案 0 :(得分:1)

for %%f in (closecaption_*.txt) do (
  "%cd%\bin\captioncompiler.exe" "%cd%\%%f"
  copy /y "%cd%\%%~nf.dat" "Z:\Users\jbzdarkid\"
)
pause
如果我的水晶球正常工作,

应该有效。它选择%%f的名称标准。

一些例子可以使问题更清楚。

答案 1 :(得分:0)

以下代码应该有效:

for /f "tokens=1,2 delims=." %%f in ('dir /a-d /b "%cd%\closecaption_*.txt"') do (
    "%cd%\bin\captioncompiler.exe" "%cd%\%%f"
    copy /y "%cd%\%%f.dat" "Z:\Users\jbzdarkid\"
)
pause