我有以下代码的批处理文件
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
上面的代码有两个用&&
分隔的命令,这意味着第二个命令仅在第一个命令执行后运行。但是它没有运行。我基本上是将一些图像与音乐结合在一起。但这是行不通的。但是,一次手动输入一个命令是可行的。谁能帮我,命令提示符有什么问题?
答案 0 :(得分:0)
%0
2d.jpg而不删除/重命名以下字符:%0
,没有成功。我填满您需要从好名字中删除%
...
%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
%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所说的那样添加新行。
答案 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