我正在编写一个批处理脚本,以转换文件夹中以及所有子目录中所有.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循环。我想知道是否有合适或更好的方法来做到这一点?任何建议表示赞赏。谢谢。