批处理如何在所有Sub目录中的每个.m4p文件上执行命令

时间:2010-09-13 06:09:45

标签: windows batch-file dos

基本上我想在永远的Sub文件夹中运行它

for %%i in (*.m4a) do faad "%%i"
for %%i in (*.wav) do oggenc "%%i"
for %%i in (*.m4a) do del "%%i"
for %%i in (*.wav) do del "%%i"

它工作得很好,但我必须手动更改目录并重新运行 例如。

cd res  
cd music
for %%i in (*.m4a) do faad "%%i"
for %%i in (*.wav) do oggenc "%%i"
for %%i in (*.m4a) do del "%%i"
for %%i in (*.wav) do del "%%i"
cd..
cd Sounds
for %%i in (*.m4a) do faad "%%i"
for %%i in (*.wav) do oggenc "%%i"
for %%i in (*.m4a) do del "%%i"
for %%i in (*.wav) do del "%%i"
cd..

然后列表继续。问题是我有数百个子文件夹,所以它需要永远 有没有办法我可以在所有子目录中自动运行我的小脚本,从定义的目录开始 比如

for /f "usebackq delims=|" %%f in (`dir /b /s *.m4p`) do faad.exe "%%f"

任何帮助都是apreciated

2 个答案:

答案 0 :(得分:1)

我为自己想出来了 我所要做的就是用m4a文件指向dir,其余代码执行代码, 它看起来虽然每个子文件夹也

cd音乐

for / r %% i in(* .m4a)do faad“%% i”

for / r %% i in(* .wav)do oggenc“%% i”

for / r %% i in(* .m4a)do del“%% i”

for / r %% i in(* .wav)do del“%% i”

供您参考。此scpipt查找m4a文件,使用faad转换为wave文件 然后使用oggenc将波形文件转换为Ogg格式 m4a文件已删除 波形文件已删除

答案 1 :(得分:0)

执行以下操作会更安全,这样如果转换过程失败,您将不会丢失源.m4a文件:

for /r %%i in (*.m4a) do call :convert %%i
goto :end

:convert
  set M4A=%1
  set WAV=%M4A:.m4a=.wav%
  set OGG=%M4A:.m4a=.ogg%
  faad %M4A%
  if not exist %WAV% (echo %M4A% not converted.) else (oggenc %WAV%      )
  if not exist %OGG% (echo %WAV% not converted.) else (del    %M4A% %WAV%) 
goto :EOF

:end