2011-10-10 35 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

只是想說謝謝,它的作品很精美 –

相關問題