如何用BAT脚本批量移动并重命名电影预告片?求修复现有脚本
批量处理电影预告片与清理冗余文件夹的BAT脚本
问题说明
- 待处理电影均位于外部硬盘的
Need to Fix文件夹下,每个电影对应独立子文件夹(格式如Batman Begins (2005)) - 需要完成的操作:
- 移动每个电影文件夹内
Featurettes\Trailer.mp4到主文件夹,并重命名为[电影文件夹名]-trailer.mp4 - 删除空的
Featurettes文件夹 - 删除冗余的
extrathumbs、extrafanart文件夹
- 移动每个电影文件夹内
原脚本失效原因
- 重复赋值
MoveToDir和MoveFromDir,变量最终仅保留最后一次赋值结果,导致仅尝试处理最后一个电影文件夹 - 未实现遍历所有电影文件夹的逻辑,也没有处理预告片的重命名需求
修复后的BAT脚本
@ECHO OFF SETLOCAL EnableDelayedExpansion :: 设置根目录(脚本放在Need to Fix文件夹内时,可直接用%~dp0,否则替换为实际路径) SET "RootDir=%~dp0" :: 遍历根目录下所有电影文件夹 FOR /D %%F IN ("%RootDir%*") DO ( :: 定义当前电影文件夹名和路径 SET "MovieFolder=%%~nxF" SET "MoviePath=%%~fF" :: 处理Featurettes中的Trailer.mp4 IF EXIST "!MoviePath!\Featurettes\Trailer.mp4" ( :: 移动并重命名预告片 MOVE /Y "!MoviePath!\Featurettes\Trailer.mp4" "!MoviePath!\!MovieFolder!-trailer.mp4" :: 删除空的Featurettes文件夹 RD "!MoviePath!\Featurettes" ) :: 删除冗余文件夹 IF EXIST "!MoviePath!\extrathumbs" RD /S /Q "!MoviePath!\extrathumbs" IF EXIST "!MoviePath!\extrafanart" RD /S /Q "!MoviePath!\extrafanart" ) ECHO 批量处理完成! PAUSE EXIT /B
脚本说明
SETLOCAL EnableDelayedExpansion:启用延迟变量扩展,确保循环中变量能正确更新%~dp0:获取脚本所在的当前目录路径,若脚本未放在Need to Fix内,需手动替换为实际根路径(如G:\Need To Fix\)FOR /D %%F IN ("%RootDir%*"):遍历根目录下所有子文件夹(即每个电影的文件夹)MOVE /Y:强制覆盖同名文件(若存在)RD /S /Q:静默删除文件夹及其所有内容(无需确认)
内容的提问来源于stack exchange,提问作者CosmoQueen88
相关产品推荐
相关产品推荐

