长话短说:我们从脚本收到一个命令并想使用 Windows Shell 执行它。
目前我们使用的方法类似于:
echo start & command & echo finish
除非命令本身包含“&”符号,否则这种方法很有效,例如
echo begin & if exist c:\temp.txt echo 1 & echo end
如果文件不存在,将无法写入“end”。
这可以通过将命令更改为 来解决echo begin & (if exist c:\temp.txt echo 1) & echo end
,但是对于包含括号符号的命令,我们会遇到问题,例如
echo begin & (echo %PATH%) & echo end
打印“\Hewlett-Packard\HP 此时是意外的。”因为我在路径中有 Program Files (x86)。
有什么方法可以从命令结果中转义特殊字符吗?
提前致谢
答案1
问题在于 PATH 中的空格,因此使用引号。
echo begin & (echo "%PATH%") & echo end