我尝试执行简单的脚本:
set list="a",^
"b",^
c
echo %list%
输出
"a","b",a","b",^
虽然我预计它是“a”,“b”,c。 似乎引号破坏了一切,因为如果b没有它们,一切正常。对我来说,为什么它只会在第二次新线逃脱时才会破裂,这也很神秘。
那么,为什么输出如此奇怪? 我试图在Windows 7上启动脚本,如果重要的话
答案 0 :(得分:2)
有趣的问题!似乎当^
放在行尾时,下一行中的第一个字符不解析,但字面上插入结果而不处理由解析器。如果必须平衡这样的字符(如引号或括号),那么这会导致奇怪的“错误”,否则会与“不平衡的字符”相关联。
如果更改第一个字符。在^
之后的行中,问题消失了。例如,插入空格:
set list="a",^
"b",^
c
...或移动逗号:
set list="a"^
,"b"^
,c
...或者只是删除引用(如您已经测试过的那样)。
答案 1 :(得分:1)
正如Aacini所说,多线插入符号移除了第一个换行符并逃脱了下一个字符 这通常用于创建包含换行符的变量。
set LF=^
REM Two empty lines here creates a line feed in LF.
为了避免角色的转义,您可以使用重定向(显然)。
set list="a",<nul ^
"b",^
c
echo %list%
处的多线行为
处多线插入符号的重定向效果