我想要做的是转换存储在许多不同文件夹中的.ogg文件。我需要批处理脚本做的是从第一个文件夹和文件,转换它,然后继续到文件夹中的下一个文件。此外,在转换过程中会创建一个wave文件,因此我需要在文件转换结束时将其与原始.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。。文件执行lame -mm .wav文件生成.mp3文件del .wav文件移动到下一个.ogg文件直到文件夹中的所有文件都被转换,然后转到下一个可能不在同一文件夹中的文件夹。 示例文件夹结构。
Sounds/voice/greek
Sounds/voice/English
Sounds/voice/russion
答案 0 :(得分:5)
对FOR变量使用增强替换:
结果脚本是:
for /r %%i in (*.ogg) do (
oggdec "%%i"
del "%%i"
lame -m m "%%~dpni.wav"
del "%%~dpni.wav"
)