2013-05-20 145 views
-1

我寫了一些簡單的批處理文件,將任何音頻/視頻文件轉換爲.ogg(音頻)格式。例如,YouTube上的音樂採用.flv格式。這是腳本:如何從文件名中刪除文件擴展名?

set ogg_rate=1.3 
set source_dir=f:\music 
set dest_dir=f:\music\out 
set my_temp=f:\temp 

Rem Go to source dir 
cd /d %source_dir% 
for %%f in (*.*) do (

Rem Extract audio from avi file using ffmpeg 
c:\encode\ffmpeg.exe -i "%source_dir%\%%f" "%my_temp%\%%f.wav" 

rem Encode the audio with OGG encoder using 1.3 quality setting 
cd /d %my_temp% 
c:\encode\oggenc2.exe -q %ogg_rate% -o "%dest_dir%\%%f.ogg" "%my_temp%\%%f.wav" 

rem delete all temp files 
cd /d %my_temp% 
del *.* /q 
) 

它的工作文件,但我不知道如何刪除不必要的擴展名。

例如,如果輸入文件是file.flv然後轉換爲波後它會file.flv.wav,然後將其轉換爲.ogg這將是後file.flv.ogg

如何獲得file.ogg(不.flv

BTW:代替.flv它可以.mp4.avi或其他分機。

回答

2

在您的for聲明中,請嘗試使用%%~nf而不是%%fFor statements in batch files有很多的替代選項,你可以利用:

for %%R in (*.*) do (
    @echo %%~nR 
) 
+0

謝謝回答,但是,strangly,%%〜NF不工作 - 它給「在這個時候意外」我讀過的鏈接,您只要它應該只帶有文件名而沒有擴展名。不知道爲什麼它不工作,但.. – Mike

+1

好吧,我明白了。我需要使用%%〜nf而不是每個地方,但我只想要文件名。像這樣:for(%% f in(*。*)do( c:\ encode \ ffmpeg.exe -i「%source_dir%\ %% f」「%my_temp%\ %%〜nf.wav」 cd/d%my_temp% c:\ encode \ oggenc2.exe -q%ogg_rate%-o「%dest_dir%\ %%〜nf.ogg」「%my_temp%\ %%〜nf.wav」 – Mike

+1

如果您總是需要一個這樣的事情的便利清單,試着'for /?' –