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

发布于 2024-12-09 03:53:00 字数 1072 浏览 0 评论 0原文

我想做的是转换存储在许多不同文件夹中的 .ogg 文件。我需要批处理脚本做的是从第一个文件夹和文件开始,将其转换,然后才转到文件夹中的下一个文件。此外,在转换过程中会创建一个波形文件,因此我需要在文件转换结束时将其与原始 .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 文件 在生成 .wav 的文件上执行 oggdec del .ogg 文件 在生成 .mp3 文件的 .wav 文件上执行 lame -mm del .wav 文件移至下一个 .ogg 文件直到文件夹中的所有文件都被转换,然后移动到下一个文件夹,该文件夹可能不在同一文件夹中。 文件夹结构示例。

Sounds/voice/greek
Sounds/voice/English
Sounds/voice/russion

What im trying to do is convert .ogg files stored in many different folders. What i NEED the batch script to do is go from the first folder and file , convert it and only then move on to the next file in the folder. Also during the conversion process a wave file is created, so i need it to be deleted at the end of the files conversion along with the original .ogg file. This is my code so far. It goes through every folder and file performing the oggdec producing massive amounts of wave files. I need the script to only do one folder and one file at a time

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

(

This code above almost works in that the end result is working, but unfortunately i need it to convert only one file at a time and delete the original .ogg and .wav before moving to the next .ogg file.So i need it to follow this rule
Take the first folder and the first .ogg file do oggdec on file producing the .wav del the .ogg file do lame -m m on the .wav file producing the .mp3 file del the .wav file move on to the next .ogg file until all files in the folder are converted then move on to the next folder which may not be in the same folder.
An example folder structure.

Sounds/voice/greek
Sounds/voice/English
Sounds/voice/russion

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

打小就很酷 2024-12-16 03:53:00

使用 FOR 变量的增强替换:

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

结果脚本为:

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

Using enhanced substitution for FOR variable:

  • %%~di - drive letter
  • %%~pi - file path
  • %%~ni - file name without extension

Resulting script is:

for /r %%i in (*.ogg) do (
  oggdec "%%i"
  del "%%i"
  lame -m m "%%~dpni.wav"
  del "%%~dpni.wav"
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文