【问题标题】:deleting the input file after handbraking in batch-file在批处理文件中手刹后删除输入文件
【发布时间】:2015-01-29 18:23:56
【问题描述】:

我为 HandBrakeCLI 编写了这段代码作为批处理文件来操作我的视频。此代码使用输入文件名和“_conv”后缀创建输出文件。

for /R .\test %%F in (*.mov) do HandBrakeCLI -e x264 --x264-preset medium -q 35 --crop 0:0:0:0 --aencoder copy -i "%%~fF" -o "%%~pF%%~nF_conv.mp4

然后我想删除原始文件,然后删除输出文件的 _conv 部分。应该在上面的代码中添加什么?

我想在转换后删除每个文件,或者至少在从其包含文件夹到另一个文件夹时删除,而不是在转换所有文件后完全删除(因为必须转换大量文件,我可能会用完空间)

顺便问一下,除了 *.mov 之外,如何在代码中添加其他格式?

【问题讨论】:

    标签: batch-file handbrake


    【解决方案1】:
    for /R .\test %%F in (*.mov) do (
        HandBrakeCLI -e x264 --x264-preset medium -q 35 --crop 0:0:0:0 --aencoder copy -i "%%~fF" -o "%%~dpF%%~nF_conv.mp4"
        if exist "%%~dpF%%~nF_conv.mp4" (
            del "%%~fF"
            ren "%%~dpF%%~nF_conv.mp4" "%%~nxF"
        )
    )
    

    所有信息都在您的原始代码中。所需要的只是将一组命令包装在括号中,以便为每个输入文件执行三个命令。此外,还包含一个附加的if,仅在转换后的文件存在时才删除源文件。

    【讨论】:

    • 我会测试 if !errorlevel! equ 0 if exist "%%~dpF%%~nF_conv.mp4" ( 并假设 HandBrakeCLI 正确返回错误代码...可能有优势吗?
    • @Josefz,如果手刹在失败时提高错误级别(不,我手头没有要测试的软件),最好使用if not errorlevel 1(不需要延迟扩展你的代码)或使用其余命令的条件执行,在这两种情况下,删除文件存在的测试(或者如果你像我一样偏执,最好保留它)。
    • 文件已转换。原文件已删除。但输出文件尚未重命名。
    • ren "%%~dpF%%~nF_conv.mp4" "%%~nxF" as rename 目标可能不包含路径,但仅包含文件名(当然,带有扩展名)
    • @livingbeing,常见的复制/粘贴问题。我忘记从重命名命令中删除最终名称的路径。我的错。答案已更新
    猜你喜欢
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多