Batch file 如何在批处理文件中为ffmpeg编写注释?

Batch file 如何在批处理文件中为ffmpeg编写注释?,batch-file,command-line,ffmpeg,comments,line-continuation,Batch File,Command Line,Ffmpeg,Comments,Line Continuation,我对ffmpeg和为命令行编写批处理相当陌生。我有一堆ffmpeg批处理文件,用于各种视频处理任务,我想添加注释,以便其他用户能够理解它们并根据需要进行自定义。有人能就添加评论的方法提供建议吗?下面是一个简单的示例,展示了我的尝试: C:\some_location\ffmpeg.exe ^ -i input_file -vsync cfr ^ rem /COMMENT_01 -map 0:v ^ rem /COMMEN

我对ffmpeg和为命令行编写批处理相当陌生。我有一堆ffmpeg批处理文件,用于各种视频处理任务,我想添加注释,以便其他用户能够理解它们并根据需要进行自定义。有人能就添加评论的方法提供建议吗?下面是一个简单的示例,展示了我的尝试:

C:\some_location\ffmpeg.exe ^
-i input_file -vsync cfr ^            rem /COMMENT_01
-map 0:v ^                            rem /COMMENT_02
-r 24000/1001 ^                       rem /COMMENT_03
-pix_fmt yuv444p10le ^                rem /COMMENT_04
-c:v prores_ks -profile:v 4444 ^      rem /COMMENT_05
-map_metadata -1 ^                    rem /COMMENT_06
output_file
这会给出信息:“无法为'rem'找到合适的输出格式”

这将给出一条消息:“在命令行上找到了尾随选项。”然后没有任何选项被识别为命令

C:\some_location\ffmpeg.exe ^
rem /COMMENT_01
-i input_file -vsync cfr ^
rem /COMMENT_02
-map 0:v ^
rem /COMMENT_03
-r 24000/1001 ^
rem /COMMENT_04
-pix_fmt yuv444p10le ^
rem /COMMENT_05
-c:v prores_ks -profile:v 4444 ^
rem /COMMENT_06
-map_metadata -1 ^
output_file
这会给出信息:“无法为'rem'找到合适的输出格式”

有人有什么想法吗

C:\some_location\ffmpeg.exe ^
-i input_file -vsync cfr %= COMMENT_01 =% ^
-map 0:v %= COMMENT_02 =% ^
-r 24000/1001 %= COMMENT_03 =% ^
-pix_fmt yuv444p10le %= COMMENT_04 =% ^
-c:v prores_ks -profile:v 4444 %= COMMENT_05 =% ^
-map_metadata -1 %= COMMENT_06 =% ^
output_file
将未定义变量的扩展视为注释(扩展为零)

行继续符
^
必须是行上的最后一个字符。每个
%=COMMENT=%
可以出现在行的任何位置,只要它位于最后一个
^
之前

此表单的注释不能包含
%

这仅适用于批处理文件。它无法在命令行上工作,因为在命令行模式下扩展未定义的变量不会导致空字符串

将未定义变量的扩展视为注释(扩展为零)

行继续符
^
必须是行上的最后一个字符。每个
%=COMMENT=%
可以出现在行的任何位置,只要它位于最后一个
^
之前

此表单的注释不能包含
%


这仅适用于批处理文件。它无法在命令行上工作,因为在命令行模式下扩展未定义的变量不会导致空字符串

您需要意识到,作为一个单独的命令行,使用
^
作为连接字符进行拆分,您试图将注释作为命令行参数添加到ffmpeg。你可以把你的评论加在一个命令之前,这是明智的想法。否则,您可以尝试使用未定义的变量作为注释,例如
-i输入文件-vsync cfr%=COMMENT\u 01=%^
。但是,要使其起作用,您不能在这些注释中再包含任何
%
字符。请小心使用行继续:1。在
^
前面加空格,确保
^
后面没有字符;2.至少用一个空格缩进每一个连续行,因为前一行的
^
实际上转义了下一行的第一个字符,这可能是无意的;3.不要在特殊命令
for
if
rem
中使用行继续,因为这些命令都是由解析器特别处理的,因此可能会导致错误……批处理脚本中没有真正的行内注释,尽管@Compo显示了一个很好的解决方法(也请看一看);确保它们不会出现在
^
后面!请注意,无法定义像
%=some name=%
这样的变量,因此(错误地)使用它们是非常安全的,但这仅适用于批处理文件,而不直接适用于命令提示窗口!您需要意识到,作为一个单独的命令行,使用
^
作为连接字符进行拆分,您试图将注释作为命令行参数添加到ffmpeg。你可以把你的评论加在一个命令之前,这是明智的想法。否则,您可以尝试使用未定义的变量作为注释,例如
-i输入文件-vsync cfr%=COMMENT\u 01=%^
。但是,要使其起作用,您不能在这些注释中再包含任何
%
字符。请小心使用行继续:1。在
^
前面加空格,确保
^
后面没有字符;2.至少用一个空格缩进每一个连续行,因为前一行的
^
实际上转义了下一行的第一个字符,这可能是无意的;3.不要在特殊命令
for
if
rem
中使用行继续,因为这些命令都是由解析器特别处理的,因此可能会导致错误……批处理脚本中没有真正的行内注释,尽管@Compo显示了一个很好的解决方法(也请看一看);确保它们不会出现在
^
后面!请注意,无法定义像
%=some name=%
这样的变量,因此(错误地)使用它们是非常安全的,但这仅适用于批处理文件,而不直接适用于命令提示窗口!
C:\some_location\ffmpeg.exe ^
-i input_file -vsync cfr %= COMMENT_01 =% ^
-map 0:v %= COMMENT_02 =% ^
-r 24000/1001 %= COMMENT_03 =% ^
-pix_fmt yuv444p10le %= COMMENT_04 =% ^
-c:v prores_ks -profile:v 4444 %= COMMENT_05 =% ^
-map_metadata -1 %= COMMENT_06 =% ^
output_file