FOR循环仅执行具有延迟扩展的Windows批处理文件中的最后一项

时间:2017-05-07 19:04:35

标签: windows batch-file batch-processing

我遇到与引用here类似的问题,但似乎我正在做的一切都是正确的,但仍然会发生这种情况。这是我的代码中的错误部分,目标是使用ffmpeg从一种文件格式转换为另一种文件格式:

set    subfolder=converted
set   source_ext=.avi
set   target_ext=.mov

md %subfolder%
set path=%~dp0

setlocal enabledelayedexpansion
FOR %%I IN ("*!source_ext!") DO (
  echo 1 %%I
  set this_file=%%I
  echo 2 !this_file!
  set filename_new=!!this_file:%source_ext%=!!
  set output=!path!%subfolder%\!filename_new!!target_ext!)

  %ffmpegpath%\ffmpeg.exe -i "!this_file!" -vcodec copy -acodec copy "!output!"
    echo CONVERTED !this_file!
)

我正在寻找的输出是:

1 file1.ext
2 file1.ext
CONVERTED file1.ext
1 file2.ext
2 file2.ext
CONVERTED file2.ext
1 file3.ext
2 file3.ext
CONVERTED file3.ext

奇怪的是,我得到的是:

1 file1.ext
2 file1.ext
1 file2.ext
2 file2.ext
1 file3.ext
2 file3.ext
CONVERTED file3.ext

我很难过!

0 个答案:

没有答案