gpt4 book ai didi

batch-file - ffmpeg:批量转换子文件夹中的任何内容

转载 作者:行者123 更新时间:2023-12-04 16:45:08 27 4
gpt4 key购买 nike

我对此很陌生,并且遇到了困难:

这是我的文件结构:

.\input\
.\output\
convert.bat

.\input\ 包含子文件夹,这些子文件夹又包含 .wav 和其他音频格式。我试图让 convert.bat 将这些子文件夹中的所有文件转换为 .\output\ 中的 .mp3。此外,我需要将转换后的文件命名为它源自的子文件夹的名称+它的原始文件名。

如何使用 FFMPEG 通过批处理文件执行此操作?非常感谢!

最佳答案

让我们假设包含批处理文件的文件夹 C:\Temp 具有以下文件夹结构和文件:

  • 输入
    • 文件夹.01
      • 第一个文件.wav
    • 我的文件夹
      • 第二文件.aac
    • 另一个.ac3
  • 输出
  • 转换.bat

批处理文件Convert.bat包含以下行:

@echo off
setlocal EnableDelayedExpansion

rem Input and output folder are in same directory as batch file.
set "InputFolder=%~dp0input"
set "OutputFolder=%~dp0output"
echo Input folder is: %InputFolder%
echo Output folder is: %OutputFolder%
echo/

rem Search in input folder and all subfolders for the specified types
rem of audio files and output what is found with the output file name
rem in output folder. Delayed environment variable expansion is needed
rem for all variables set or modified within the body of the FOR loop.

for /R "%InputFolder%" %%I in (*.aac *.ac3 *.wav) do (
set "InputFileName=%%~nxI"
set "InputFilePath=%%~dpI"
set "OutputFileName=!InputFilePath:~0,-1!"
call :GetOutputFileName "!OutputFileName!" "%%~nI"
echo Input file name is: !InputFileName!
echo Input file path is: !InputFilePath!
echo Output file name is: !OutputFileName!
echo Output file path is: %OutputFolder%\
echo --------
)

endlocal
echo/
pause
rem Exit batch processing and return to command process.
exit /B

rem Subroutine to get last folder name from first argument and append an
rem underscore, the file name of the input file without file extension
rem passed as second argument and the file extension MP3. But if the path
rem to the file is identical with input folder path, get just name of file
rem with different file extension.

:GetOutputFileName
if "%~1" == "%InputFolder%" (
set "OutputFileName=%~2.mp3"
) else (
set "OutputFileName=%~nx1_%~2.mp3"
)
rem Exit subroutine.
exit /B

执行此批处理文件会产生输出:

 Input folder is: C:\Temp\input
Output folder is: C:\Temp\output

Input file name is: Another.ac3
Input file path is: C:\Temp\input\
Output file name is: Another.mp3
Output file path is: C:\Temp\output\
--------
Input file name is: SecondFile.aac
Input file path is: C:\Temp\input\My Folder\
Output file name is: My Folder_SecondFile.mp3
Output file path is: C:\Temp\output\
--------
Input file name is: First File.wav
Input file path is: C:\Temp\input\Folder.01\
Output file name is: Folder.01_First File.mp3
Output file path is: C:\Temp\output\
--------

因此您可以了解如何从输入文件名获取所需的输出文件名。添加运行 ffmpeg.exe 的行,并使用适当的参数将找到的音频文件转换为输出目录中的 MP3 文件。不要忘记输入和输出文件规范周围的双引号。

为了了解所使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并仔细阅读每个命令显示的所有帮助页面。

  • 调用/?
  • 回显/?
  • endlocal/?
  • 退出/?
  • 对于/?
  • 如果/?
  • 暂停/?
  • 雷姆/?
  • 设置/?
  • setlocal/?

关于batch-file - ffmpeg:批量转换子文件夹中的任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36121091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com