如何编写批处理脚本实现压缩包内MP3重命名等自动化流程?
批量处理MP3压缩包的批处理脚本方案
脚本功能说明
自动遍历当前目录下所有.zip文件,依次完成以下流程:
- 解压压缩包到临时目录
- 按文件名排序后给MP3文件添加两位数字前缀重命名(如
XYZ (1).mp3→01 XYZ (1).mp3) - 将处理后的MP3文件打包为原压缩包同名的新zip(或移动到同名文件夹)
- 清理临时文件,自动处理下一个压缩包
完整脚本代码
@echo off setlocal enabledelayedexpansion :: 遍历当前目录下所有zip文件 for %%z in (*.zip) do ( :: 获取压缩包名称(不含扩展名) set "zipName=%%~nz" echo 正在处理: %%z :: 创建临时解压目录 set "tempDir=temp_!zipName!" mkdir "!tempDir!" 2>nul :: 解压zip到临时目录(Windows10+自带tar,旧系统可替换为7z) tar -xf "%%z" -C "!tempDir!" :: 进入临时目录处理MP3文件 pushd "!tempDir!" set "count=1" :: 按文件名排序遍历MP3 for /f "delims=" %%f in ('dir /b /on *.mp3') do ( :: 生成两位数字前缀 if !count! lss 10 ( set "prefix=0!count!" ) else ( set "prefix=!count!" ) :: 执行重命名 ren "%%f" "!prefix! %%f" set /a count+=1 ) popd :: 二选一:打包为新zip 或 移动到同名文件夹 :: 选项1:打包成带_processed后缀的新zip tar -cf "!zipName!_processed.zip" -C "!tempDir!" . :: 选项2:创建同名文件夹并移动文件(取消注释即可启用) :: mkdir "!zipName!" 2>nul :: move "!tempDir!\*.mp3" "!zipName!" >nul :: 清理临时目录 rmdir /s /q "!tempDir!" echo 处理完成: !zipName! echo. ) echo 所有压缩包处理完毕! pause
使用说明
- 依赖工具:脚本默认用Windows10及以上自带的
tar命令,旧系统需替换为7z工具:- 解压命令改为:
7z x "%%z" -o"!tempDir!" - 打包命令改为:
7z a "!zipName!_processed.zip" "!tempDir!\*"
- 解压命令改为:
- 排序规则:脚本按文件名排序重命名,若需按日期排序,把
dir /b /on *.mp3改成dir /b /od *.mp3 - 运行方式:将脚本保存为
process_mp3_zips.bat,放在zip文件所在目录双击运行
注意事项
- 处理前务必备份原压缩包,避免意外丢失文件
- 若压缩包内有子目录,脚本会一并处理子目录中的MP3,如需仅处理根目录MP3,去掉
dir命令的/s参数(本脚本默认未加/s,仅处理根目录)
内容的提问来源于stack exchange,提问作者johnbrick
相关产品推荐
相关产品推荐

