只要您记得插入符号和其后的换行符已完全删除,就可以用插入符号^
因此,如果您在换行的地方应该有一个空格,请加上一个空格。 (下面有更多内容。 )
例子:
copy file1.txt file2.txt
将被写为:
copy file1.txt^
file2.txt
插入符号的规则是:
在行的末尾插入一个尖号,追加下一行,追加的行的第一个字符将被转义。
您可以多次使用插入符号,但是完整的行不能超过〜8192 个字符的最大行长(Windows XP,Windows Vista 和 Windows 7)。
echo Test1
echo one ^
two ^
three ^
four^
*
--- Output ---
Test1
one two three four*
echo Test2
echo one & echo two
--- Output ---
Test2
one
two
echo Test3
echo one & ^
echo two
--- Output ---
Test3
one
two
echo Test4
echo one ^
& echo two
--- Output ---
Test4
one & echo two
要禁止转义下一个字符,可以使用重定向。
重定向必须在插入符号之前。但是,在插入符号之前存在一种对重定向的好奇心。
如果将标记放在插入符号上,则标记将被删除。
echo Test5
echo one <nul ^
& echo two
--- Output ---
Test5
one
two
echo Test6
echo one <nul ThisTokenIsLost^
& echo two
--- Output ---
Test6
one
two
也可以将换行符嵌入到字符串中:
setlocal EnableDelayedExpansion
set text=This creates ^
a line feed
echo Test7: %text%
echo Test8: !text!
--- Output ---
Test7: This creates
Test8: This creates
a line feed
空行对于成功很重要。这仅适用于延迟扩展,否则在换行后将忽略其余行。
之所以有效,是因为行尾的插入号会忽略下一个换行符并转义下一个字符,即使下一个字符也是换行符(在此阶段也总是忽略回车)。
(这基本上是对Wayne 答案的重写,但是消除了插入符号周围的混乱。因此,我将其发布为 CW。我不怕编辑答案,但是完全重写它们似乎是不合适的。)
您可以使用插入符号( ^
)分隔长行,只需记住插入符号和其后的换行符已从命令中完全删除,因此,如果将其放在需要空格的位置(例如参数之间),确保还包括空格(在^
之前,或在下一行的开头 - 后一种选择可能有助于使它更清楚地表示是连续字符)。
示例:(均已在 Windows XP 和 Windows 7 上进行了测试)
xcopy file1.txt file2.txt
可以写成:
xcopy^
file1.txt^
file2.txt
或者
xcopy ^
file1.txt ^
file2.txt
甚至
xc^
opy ^
file1.txt ^
file2.txt
(最后一个有效是因为xc
和^
没有空格,并且在下一行的开头没有空格。因此,当删除^
和换行符时,您会得到... xcopy
。)
为了提高可读性和完整性,最好只在两个参数之间打断(一定要包括空格)。
确保^
不是批处理文件中的最后一项,因为似乎存在主要问题。