2011-10-10 37 views
3

即时通讯工具试图做的是转换存储在许多不同文件夹中的.ogg文件。我需要批处理脚本执行的操作是从第一个文件夹和文件开始,转换它,然后才转到文件夹中的下一个文件。在转换过程中,还会创建一个波形文件,所以我需要在文件转换结束时将其与原始.ogg文件一起删除。这是我的代码到目前为止。它通过执行oggdec的每个文件夹和文件生成大量的波形文件。我需要的脚本来只做一个文件夹,一个文件在同一时间批处理脚本文件一次转换每个文件夹中的每个文件

for /r %%i in (*.ogg) do oggdec "%%i" 
for /r %%i in (*.ogg) do del "%%i" 
for /r %%i in (*.wav) do lame -m m "%%i" 
for /r %%i in (*.wav) do del "%%i" 

@echo off 
etlocal enabledelayedexpansion 
set deletestring=.wav 
echo Ready to start 
echo. 

echo. 
for /f "delims==" %%F in ('dir /b /s /a-d ^| find "%deletestring%"') do (
    set oldfilename=%%~nxF 
    set pathname=%%~dpF 
    set newfilename=!oldfilename:%deletestring%=! 
    Ren "!pathname!!oldfilename!" "!newfilename!" 
    ) 
echo. 
echo All done 

(

这上面的代码几乎工作在最终结果是工作,但不幸的是我需要它只有一个文件转换的时间和删除原始.ogg和.wav移动到下一个.ogg文件之前。所以我需要它遵循此规则 取第一个文件夹和第一个.ogg文件做文件oggdec生成.wav del .ogg文件做跛脚-mm .wav文件生成.mp3文件del .wav文件移至下一个.ogg文件,直到转换文件夹中的所有文件,然后转到下一个可能不在同一文件夹中的文件夹。 示例文件夹结构。

Sounds/voice/greek 
Sounds/voice/English 
Sounds/voice/russion 

回答

5

使用增强的用于取代FOR变量:

  • %%〜二 - 盘符
  • %%〜PI - 文件路径
  • %%〜NI - 文件名不带扩展

生成的脚本是:

for /r %%i in (*.ogg) do (
    oggdec "%%i" 
    del "%%i" 
    lame -m m "%%~dpni.wav" 
    del "%%~dpni.wav" 
) 
+1

只是想说谢谢,它的作品很精美 –

相关问题