ste*_*r25 3 windows batch-file
运行以下示例批处理文件,
echo foo &&^
"C:\Program Files\Internet Explorer\iexplore.exe"
Run Code Online (Sandbox Code Playgroud)
...产生以下输出:
Run Code Online (Sandbox Code Playgroud)foo '"C:\Program' is not recognized as an internal or external command, operable program or batch file.
我错过了什么?
编辑
标记为,这个问题是处理Windows(XP)批处理文件.
对不起,但几乎所有的答案都是错的,或者不明白会发生什么.
该问题与cmd-line无关,或者是否在批处理文件中.
插入符号多行字符的规则:
行尾的插入符号,附加下一行并转义附加行的第一个字符!
这就是你得到的原因
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 &
Run Code Online (Sandbox Code Playgroud)
这也是原始代码无法工作的原因
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"
Run Code Online (Sandbox Code Playgroud)
为什么其他解决方案有效?
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"
Run Code Online (Sandbox Code Playgroud)
如果你正在逃避"c"与否"对于"cmd"并不重要.
有一种方法可以让第二条线工作而不需要修改它.
echo foo && >con ^
"C:\Program Files\Internet Explorer\iexplore.exe"
Run Code Online (Sandbox Code Playgroud)
这是一个特殊情况的特殊情况,插入符号作为普通多行,但不会转义第一个字符.(我想,cmd.exe没有编程,它来自混乱).
| 归档时间: |
|
| 查看次数: |
1458 次 |
| 最近记录: |