带前缀的循环批处理脚本

Batch script for loop with prefix

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

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

但是这不起作用。

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

应该可以工作。它选择 %%f.

的名称参数

一些例子会让事情变得更清楚。

以下代码应该有效:

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