我有一个 .bat 文件,用于将多个文件合并为一个新文件,它之前看起来像这样:
copy /b ^
E:\file1.txt+^
E:\file2.txt+^
E:\file3.txt ^
E:\output.txt
:: comment
效果很好。然后我想在代码上方添加注释,所以我将其更改为:
:: comment
:: comment
copy /b ^
E:\file1.txt+^
E:\file2.txt+^
E:\file3.txt ^
E:\output.txt
:: comment
它不再起作用了。当我运行它时,终端上没有任何内容打印出来。
如果我删除顶部的评论,它就会立即重新开始工作。
为什么会发生这种情况?
编辑:
我想我不应该把代码简化这么多。文件顶部的注释之一实际上是这样的:
:: E:\file3.txt+^
玩弄它后,我发现注释中的字符+^
会导致文件无法工作。
我也尝试REM
在这行上使用,但结果打印出了错误。所以看起来有些字符在注释中根本就不能用?
答案1
行尾的字符^
充当行的延续。(它通过转义换行符来实现)。
之后的行继续不起作用REM
(除了少数例外) - 之后的所有字符REM
通常会被忽略。
行继续在之后起作用::
,因此整个脚本将变成一个大注释。
^
您可以通过删除注释中的尾部来修复此问题,或者在 后添加另一个字符^
,或者使用REM
而不是::
。
在某些情况下, REM 注释可以延续到下一行:
@echo off
:: This is a multi-line comment ^
This line is a continuation of the comment above
:: This comment ^ does not continue
echo This line 1 is executed
rem This comment does not continue ^
echo This line 2 is executed
rem.This is a multi-line comment ^
This is a continuation of the comment above
rem^ This is a multi-line comment ^
This is a continuation of the comment above
rem^,This is a multi-line comment ^
This is a continuation of the comment above
rem^;This is a multi-line comment ^
This is a continuation of the comment above
rem^=This is a multi-line comment ^
This is a continuation of the comment above
rem^:This is a multi-line comment ^
This is a continuation of the comment above
我不知道有任何一种注释样式无论内容如何都是普遍安全的。例如,包含无效扩展语法的注释将导致致命的语法错误!
rem %~x This comment containing invalid expansion results in a fatal error
echo This line is never reached
样式::
注释也遭遇同样的命运
:: %~x This comment containing invalid expansion results in a fatal error
echo This line is never reached
答案2
::
不是评论,而是标签。
要发表评论,请以以下内容开头,Rem
而不是::
“Rem” 是 remark 的缩写。