批处理文件未运行,仅单个命令运行

时间:2019-11-20 08:02:42

标签: batch-file cmd ffmpeg command command-prompt

我有以下代码的批处理文件

cd C:\xampp\htdocs\Projects\videos\images_compare_english && ffmpeg -framerate .25 -i img-%02d.jpg -i music.mp3 -c:v libx264 -preset veryslow -crf 0 -c:a copy -shortest compare_english\output.mp4

上面的代码有两个用&&分隔的命令,这意味着第二个命令仅在第一个命令执行后运行。但是它没有运行。我基本上是将一些图像与音乐结合在一起。但这是行不通的。但是,一次手动输入一个命令是可行的。谁能帮我,命令提示符有什么问题?

3 个答案:

答案 0 :(得分:0)


  • 更新-我尝试了一种可能的命令选项,使用文件名重命名img-%0 2d.jpg而不删除/重命名以下字符:%0,没有成功。我填满您需要从好名字中删除% ...

enter image description here



尝试重命名img-%0 2d.jpg文件,删除/更改此%0

%0 ==是用于保存bat文件本身名称的变量:

%0 == your_bat_file.bat

img-%02 d.jpg == img-your_bat_file.bat 2d.jpg


@echo off && setlocal EnableDelayedExpansion

set "_to_push=C:\xampp\htdocs\Projects\videos\images_compare_english"              & rem/ path files mp3/jpg
set "_ffmpegF=C:\ffmpeg\bin\ffmpeg.exe"                                            & rem/ path binary ffmpeg
set "_to_save=!_to_push!\compare_english"                                          & rem/ path binary ffmpeg
rem./                                                                    next line & rem/ ffmpeg.exe command
"!_ffmpegF!" -framerate .25 -i "!_to_push!\img-02d.jpg" -i "!_to_push!\music.mp3"  ^
    -c:v libx264 -preset veryslow -crf 0 -c:a copy -shortest "!_to_save!\output.mp4"

endlocal && exit /b 

使用 ffmepg 测试的文件名布局,它们来自 ffmpeg cmd.exe

rem/ using %%02d  == img-%02d.jpg
[image2 @ 0000017eeb2eb980] Could find no file with path 'C:\xampp\htdocs\Projects\videos\images_compare_english\img-%02d.jpg' and index in the range 0-4
C:\xampp\htdocs\Projects\videos\images_compare_english\img-%02d.jpg: No such file or directory

 rem/ using ?02d == img-?02d.jpg
[image2 @ 0000027e9792b980] Could find no file with path 'C:\xampp\htdocs\Projects\videos\images_compare_english\img-?02d.jpg' and index in the range 0-4
C:\xampp\htdocs\Projects\videos\images_compare_english\img-?02d.jpg: No such file or directory

rem/ using %%%02d == img-%Q58949386.cmd2d
C:\xampp\htdocs\Projects\videos\images_compare_english\img-%Q58949386.cmd2d.jpg: No such file or directory

rem/ using *02d == img-*02d.jpg
[image2 @ 0000024dc0edb980] Could find no file with path 'C:\xampp\htdocs\Projects\videos\images_compare_english\img-*02d.jpg' and index in the range 0-4
C:\xampp\htdocs\Projects\videos\images_compare_english\img-*02d.jpg: No such file or directory

enter image description here



 获取有关%0, %~0, %~d0, %~dp0, %~f0, %~n0, %~x0...

的更多信息

答案 1 :(得分:0)

通过使用%ERRORLEVEL%检查是否有任何问题,检查上一个命令的cd C:\xampp\htdocs\Projects\videos\images_compare_english & echo %errorlevel%只是看是否有任何问题。如果%ERRORLEVEL%为0,则它​​应与&&一起使用,但是如果它不为0,则有问题,并且&&将不起作用。

&&意味着如果前一个命令的%ERRORLEVEL%为0,则下一个命令将运行。只需使用&在同一行中运行两个命令即可。另外,如果您在批处理文件中,在一行上执行两个命令的目的是什么?就像Gerhard Barnard所说的那样添加新行。

https://pastebin.com/nkkCUMKn

答案 2 :(得分:-1)

&&并不意味着下一个命令必须在前一个命令完成之后运行。这意味着该命令仅在前一个命令成功执行后才会执行。这是固定代码:

@echo off
pushd C:\xampp\htdocs\Projects\videos\images_compare_english & ffmpeg -framerate .25 -i img-%02d.jpg -i music.mp3 -c:v libx264 -preset veryslow -crf 0 -c:a copy -shortest compare_english\output.mp4
popd
goto :eof