【问题标题】:Batch convert all files in a directory with spaces in filename批量转换文件名中包含空格的目录中的所有文件
【发布时间】:2013-04-23 14:42:56
【问题描述】:

我已经完成了这个批处理文件,它应该转换给定文件夹中的所有 mp3 文件,但是我不知道为什么,它不起作用...

代码如下:

@echo off
title Converting...

set fold=C:\Users\Username\Music\Music to convert\
set ext=*.mp3
set dest=C:\Users\Username\Music\Converted Music\

for %%f in (%fold%%ext%) do ffmpeg -i %%f -b 192k %dest%%%f

pause>nul
exit

我认为这是因为文件名和文件夹名中的空格,但我实际上并不知道...有人可以验证并找出正确的代码吗?

谢谢...

【问题讨论】:

    标签: batch-file batch-processing


    【解决方案1】:

    简单。

    for %%f in ("%fold%%ext%") do ffmpeg -i "%%f" -b 192k "%dest%%%~nxf"
    

    (修改版)

    这是我的测试批次

    @echo OFF
    SETLOCAL
    REM title Converting...
    
    set fold=U:\Users\Username\Music\Music to convert\
    set ext=*.mp3
    set dest=U:\Users\Username\Music\Converted Music\
    
    :: This makes the directories, then creates two dummy files
    :: only used for testing.
    
    MD "%fold%"
    MD "%dest%"
    dir>"%fold%file1.mp3"
    dir>"%fold%file two.mp3"
    
    for %%f in ("%fold%%ext%") do ECHO ffmpeg -i "%%f" -b 192k "%dest%%%~nxf"
    

    最后一行的ECHO 是显示将要执行的内容。验证后,去掉ECHO关键字,激活FFMPEG命令。

    %%~nxf是文件名+扩展名%%f

    结果:

    ffmpeg -i "U:\Users\Username\Music\Music to convert\file1.mp3" -b 192k "U:\Users\Username\Music\Converted Music\file1.mp3"
    ffmpeg -i "U:\Users\Username\Music\Music to convert\file two.mp3" -b 192k "U:\Users\Username\Music\Converted Music\file two.mp3"
    

    嗯...当您将 FOLDDEST 设置为 %username% 时,您可能需要替换 USERNAME


    修改为添加对多种文件类型的处理

    @echo OFF
    SETLOCAL
    REM title Converting...
    
    set fold=U:\Users\Username\Music\Music to convert\
    set ext=*.mp3 *.wma *.m4a
    set dest=U:\Users\Username\Music\Converted Music\
    
    :: This makes the directories, then creates dummy files
    
    MD "%fold%"
    MD "%fold%subdir"
    MD "%dest%"
    dir>"%fold%file1.mp3"
    dir>"%fold%file two.mp3"
    dir>"%fold%file3.wma"
    dir>"%fold%subdir\file four.wma"
    
     for /r "%fold%" %%f in (%ext%) do ECHO ffmpeg -i "%%~ff" -b 192k "%dest%%%~nxf"
    

    请注意我没有更改 FFMPEG 命令 - 您知道您需要的参数。命令像往常一样回显。

    如果您想使用恒定输出扩展名,例如 .MP3,请将 "%dest%%%~nxf" 更改为 "%dest%%%~nf.MP3"

    修改后的批量输出:

    ffmpeg -i "U:\Users\Username\Music\Music to convert\file1.mp3" -b 192k "U:\Users\Username\Music\Converted Music\file1.mp3"
    ffmpeg -i "U:\Users\Username\Music\Music to convert\file two.mp3" -b 192k "U:\Users\Username\Music\Converted Music\file two.mp3"
    ffmpeg -i "U:\Users\Username\Music\Music to convert\file3.wma" -b 192k "U:\Users\Username\Music\Converted Music\file3.wma"
    ffmpeg -i "U:\Users\Username\Music\Music to convert\subdir\file four.wma" -b 192k "U:\Users\Username\Music\Converted Music\file four.wma"
    

    【讨论】:

    • 好的,非常感谢!请最后一件事......有没有办法读取这个文件夹的子目录并转换多种文件类型?例如:对于目录中具有 wma、m4a 和 mp3 扩展名的文件,我会执行此 'ffmpeg -y -i input-file.ext -vn -ar 44100 -ac 2 -ab 192k -f mp3 output-file.mp3' 和子目录。谢谢你的时间:)
    • 非常非常非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 2011-03-04
    • 2013-10-30
    • 2014-07-11
    • 2014-03-22
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多