Windows ffmpeg未正确使用批处理脚本中的通配符

Windows ffmpeg未正确使用批处理脚本中的通配符,windows,batch-file,ffmpeg,Windows,Batch File,Ffmpeg,我想要做的实际上是超级简单,如果在cmd窗口中执行,它工作得很好,尽管在批处理脚本中使用时它不工作。下面的命令通常会获取模式为anim_xxxx.png的所有.png文件(%04d代表ffmpeg中的4个数字) 现在我得到的错误是图像序列的通配符,我不知道问题出在哪里。使用另一个通配符,如*会产生相同的错误 [image2@0000000000 33E8C0]找不到路径为的文件 “anim_render.bat4d.png”,索引范围为0-4 anim_render.bat4d.png:没有这样

我想要做的实际上是超级简单,如果在cmd窗口中执行,它工作得很好,尽管在批处理脚本中使用时它不工作。下面的命令通常会获取模式为anim_xxxx.png的所有.png文件(%04d代表ffmpeg中的4个数字)

现在我得到的错误是图像序列的通配符,我不知道问题出在哪里。使用另一个通配符,如*会产生相同的错误

[image2@0000000000 33E8C0]找不到路径为的文件 “anim_render.bat4d.png”,索引范围为0-4 anim_render.bat4d.png:没有这样的文件或目录


%04d是否与批处理文件中不存在于批处理文件之外的任何变量相似?到目前为止,我还没有找到任何类似的案例。

不知道
%04
对于
FFMPEG
来说意味着什么,尽管
anim.*.mpg
似乎是一种更为普遍理解的指定
所有开头的'anim.
的方法,也许这是一种特殊的含义
+任何4个字符
(虽然
在这里似乎更常见

尽管如此,ffmpeg似乎希望
%
按字面上的
提供,因此批量治疗方法是在
%
之前加上插入符号:
^%


Erm-使
%
-
^x
加倍通常与批处理中具有特殊意义的字符一起工作;似乎您需要
%
来转义
%

它指定了模式anim_xxxx.png,就像我在问题中所写的那样。在%04d的情况下,xxxx是从0001开始的递增数字。使用^%可以得到不幸的是,同样的错误:/哦,我应该提到,我已经尝试过*并且得到了相同的错误。%0在批处理中意味着“此批文件的名称”,因此,因为您的批的名称是“anim\u render.bat”批处理将%0替换为
anim\uuu%04d.png
成为
anim\u anim\u render.bat4d.png
,因此理论上,该行应该变成
ffmpeg-f image2-i anim\uu04d.png-vcode mjpeg-q:v 0-r 25 foo.avi
-将
%/code>加倍,我不知道为什么会这样,尽管我尝试了完全相同的方法但是,在使用与上面完全相同的脚本时,再次出现相同的错误。它现在可以工作了,答案是正确的,因此感谢您让我再试一次。我想:我总是遇到问题,我已经断断续续地做了很多年。%04d来自C函数printf。在那里,它将生成前导零的4位数字。它是值得一看的是,Scanf上长于手册页的文档与printf相反,并且使用相同的字符转换。除非使用-start\u number,否则数字应该从0开始。
ffmpeg -f image2 -i anim_%04d.png -vcodec mjpeg -q:v 0 -r 25 foo.avi