如何使用FOR /R命令在所有子文件夹批量运行指定FLAC转换脚本
批量处理子文件夹中WAV转FLAC的解决方案
我来帮你搞定这个批量处理的问题!你需要的是一个能递归遍历所有子文件夹并执行FLAC转换命令的批处理脚本,完全不用手动复制到每个子文件夹里。
最终可用的批处理脚本
把下面这段代码保存成.bat文件(比如BatchConvertWavToFlac.bat),直接放在你的主文件夹里运行就行:
@echo off setlocal enabledelayedexpansion :: 定义FLAC工具的路径,方便后续修改 set "FLAC_EXE=c:\Flac\flac.exe" :: 递归遍历当前主文件夹下的所有子文件夹 for /r %%d in (.) do ( :: 切换到当前子文件夹 pushd "%%d" :: 先判断当前文件夹是否有WAV文件,避免空执行 if exist *.wav ( echo 正在处理文件夹: %%d "%FLAC_EXE%" -8 *.wav --verify --delete-input-file --replay-gain echo 文件夹 %%d 处理完成! ) :: 切回主文件夹,继续下一个遍历 popd ) echo 所有文件夹处理完毕! pause
脚本细节拆解
@echo off:关闭命令行的默认命令输出,让界面更整洁setlocal enabledelayedexpansion:启用延迟环境变量扩展,确保循环中的路径变量能正常解析set "FLAC_EXE=c:\Flac\flac.exe":把FLAC工具路径定义为变量,后续如果工具位置变动,直接改这一行就行for /r %%d in (.) do:/r参数是核心——它会递归遍历当前目录(也就是你放脚本的主文件夹)下的所有子文件夹,%%d会依次代表每个子文件夹的完整路径pushd "%%d":临时切换到当前子文件夹,这样*.wav就能精准匹配该文件夹内的WAV文件,不会跨目录if exist *.wav:先检查当前文件夹有没有WAV文件,避免空文件夹执行命令时出现报错提示- 你的原FLAC转换命令完全保留,只是通过变量调用工具路径,确保路径解析不出问题
popd:切换回主文件夹,继续处理下一个子文件夹pause:处理完成后暂停窗口,方便你查看处理结果,不会直接闪退
注意事项
- 确认
c:\Flac\flac.exe的路径和你实际的FLAC工具位置一致,不一致的话修改FLAC_EXE变量的值即可 - 测试时可以先找一两个子文件夹验证效果,尤其是
--delete-input-file参数会删除原WAV文件,一定要确认你不需要原文件再正式运行 - 如果部分子文件夹里的WAV文件数量多,处理时间会稍长,耐心等待即可
内容的提问来源于stack exchange,提问作者bmcelvan
相关产品推荐
相关产品推荐

