很抱歉,几乎所有的答案都是错误的,或者不理解发生了什么。
这个问题与命令行或者是否在批处理文件中无关。
插入符号多行字符的规则如下:
在行末插入插入符号,会将下一行添加到当前行并转义附加行的第一个字符!
这就是你遇到问题的原因。
echo foo ^
&& echo bar
---- OUTPUT ---
foo &
bar
---------------
rem equivalent to
echo foo ^&& echo bar
rem So the first ampersand is escaped and the second works as a single &
这也是原始代码无法工作的原因。
echo foo &&^
"C:\Program Files\Internet Explorer\iexplore.exe"
rem is equivalent to this, so the quote will be escaped
echo foo &&^"C:\Program Files\Internet Explorer\iexplore.exe"
为什么另一种解决方案可行?
echo foo &&^
cmd /c "C:\Program Files\Internet Explorer\iexplore.exe"
rem is equivalent to
echo foo &&^cmd /c "C:\Program Files\Internet Explorer\iexplore.exe"
如果您正在避免使用 "c",这对于 "cmd" 并不重要。
有一种方法可以在不修改第二行的情况下使其正常工作。
echo foo && >con ^
"C:\Program Files\Internet Explorer\iexplore.exe"
这是一个特殊情况的特殊情况,插入符号在多行文本中起到正常作用,但不需要对第一个字符进行转义。(我猜测cmd.exe没有被编程来处理这个,它只是从混乱中出现了。)