/ r循环批处理在新创建的文件夹上无限期重复出现

时间:2019-07-23 10:38:48

标签: batch-file

我正在编写一个批处理脚本,以转换文件夹中以及所有子目录中所有.avi文件的视频编解码器。需要保留原始文件,并将输出文件放入一个名为“已转换”的文件夹。

我想要什么:

C:\folder\file1.avi            C:\folder\file1.avi
          file2.avi                      file2.avi
          \sub\file3.avi                 \sub\file3.avi
                         ==>             \Converted\file1.avi
                                                    file2.avi
                                                    \sub\file3.avi

我尝试了以下代码。为了说明这个问题,将转换行注释掉并替换为复制文件。

@echo off
cls

set target_dir=%cd%\Converted
echo %target_dir%
if EXIST "%target_dir%" (
    rmdir /s/q "%target_dir%"
) else (
    mkdir "%target_dir%"
)

setlocal ENABLEDELAYEDEXPANSION
FOR /r %%I IN (*.avi) DO (
    set org_file_dir=%%~dpI
    set org_file_path=%%I
    set converted_file_dir="!org_file_dir:%cd%=%cd%\converted!"
    set converted_file_path="!org_file_path:%cd%=%cd%\converted!"

    IF NOT EXIST !converted_file_dir! (mkdir !converted_file_dir!)

    rem %converter% %input_flag% -i "!org_file_path!" %output_flag% !converted_file_path!
    copy "!org_file_path!" !converted_file_path!

    echo "!org_file_path!"
)
endlocal

pause
exit /B 0

我所拥有的

C:\folder\file1.avi         C:\folder\file1.avi
          file2.avi                   file2.avi
          \sub\file3.avi              \sub\file3.avi
                                      \Converted\file1.avi
                                                 file2.avi
                           ==>                   \sub\file3.avi
                                                 \Converted\file1.avi
                                                            file2.avi
                                                            \sub\file3.avi
                                                   :
                                                   :
                                                   :

我可以通过以下方法解决该问题:首先循环所有.avi文件,并将其完整路径输出到txt文件,然后读取该txt文件并进行for循环。我想知道是否有合适或更好的方法来做到这一点?任何建议表示赞赏。谢谢。

0 个答案:

没有答案