每个文件夹中的每个文件逐个转换的批处理脚本文件

3
我需要做的是将存储在许多不同文件夹中的.ogg文件转换。我需要批处理脚本从第一个文件夹和文件开始,转换它,然后再去下一个文件。同时,在转换过程中会创建一个wave文件,所以我需要在文件转换结束时删除它以及原始的.ogg文件。这是我目前的代码。它会遍历每个文件夹和文件,执行oggdec并产生大量的wave文件。我需要脚本一次只处理一个文件夹和一个文件。
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文件之前删除原始的.ogg和.wav文件。因此,我需要遵循以下规则: 从第一个文件夹和第一个.ogg文件开始,对文件进行oggdec操作,生成.wav文件,删除.ogg文件,对.wav文件进行lame -m m操作,生成.mp3文件,删除.wav文件,然后继续处理下一个.ogg文件,直到该文件夹中的所有文件都被转换完毕,然后移动到下一个文件夹(可能不在同一个文件夹中)。 以下是一个示例文件夹结构。
Sounds/voice/greek
Sounds/voice/English
Sounds/voice/russion
1个回答

5

使用增强替换的FOR变量:

  • %%~di - 驱动器号
  • %%~pi - 文件路径
  • %%~ni - 不带扩展名的文件名

生成的脚本如下:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接