2013-05-20 147 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 /?' –