批处理脚本文件,用于一次转换每个文件夹中的每个文件

时间:2011-10-10 23:43:34

标签: batch-processing batch-file

我想要做的是转换存储在许多不同文件夹中的.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

1 个答案:

答案 0 :(得分:5)

对FOR变量使用增强替换:

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

结果脚本是:

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