【问题标题】:Condition after for loop (Batch/CMD)for 循环后的条件 (Batch/CMD)
【发布时间】:2020-01-18 20:14:39
【问题描述】:

所以我目前有这批使用 ffmpeg 将当前文件夹上的每个 .MTS 转换为 .MP4,但是当它完成后,我会在文件夹中同时获得 .mp4 和 .mts。 我有 2 个批次,一个用于转换文件,另一个用于之后删除不需要的文件,但我在尝试将它们加入同一个批处理脚本时遇到了麻烦。

转换器.bat:

for %%i in (*.MTS) do ffmpeg -i "%%i" -c:a libfdk_aac -b:a 256k "%%~ni.mp4"

删除.bat:

del /S *.MTS

有什么帮助吗?

【问题讨论】:

    标签: batch-file cmd ffmpeg


    【解决方案1】:

    要“将它们加入批处理脚本”,只需将它们写入同一个批处理脚本:

    @echo off
    for %%i in (*.MTS) do ffmpeg -i "%%i" -c:a libfdk_aac -b:a 256k "%%~ni.mp4"
    del /S *.MTS
    

    虽然我会推荐:

    @echo off
    for %%i in (*.MTS) do ffmpeg -i "%%i" -c:a libfdk_aac -b:a 256k "%%~ni.mp4" && del /S "%%i"
    

    &&的意思是“只有上一个成功了才做下面的”,所以文件只有在转换成功时才会被删除。

    (重新考虑del /s - 它将删除当前文件夹和所有子文件夹中的文件。简单的del "%%i" 只会删除处理过的文件并保留任何子文件夹中的文件)

    【讨论】:

    • && 正是我所期待的,谢谢!
    • 供将来使用:相反的是||(“如果先前的命令失败则”)。您甚至可以将它们组合起来:<command> && echo succesfull || echo failed
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多