通过Windows批处理文件将长命令拆分到多行
插入符的规则是:
在行末的插入符会在下一行添加字符,被添加的行的第一个字符会被转义。
可以多次使用插入符,但完整的行长不能超过最大行长,大约为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
还可以将换行符嵌入字符串中:
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
空行非常重要。只有使用延迟扩展时,该方法才有效。否则,行结束符后忽略其余内容。
这种方法有效,因为行末的插入符忽略下一个行结束符并转义下一个字符,即使下一个字符也是行结束符(回车符在这个阶段总是被忽略的)
你可以使用插入符号^
来分割较长的行,只要记住插入符和其后的新行都会被完全删除。所以,如果你要在分割行的位置加上空格,就要在插入符前加上空格。(更多详细信息请见下文。)
例如:
copy file1.txt file2.txt
应该写成:
copy file1.txt^ file2.txt