如何通过一个报价管道字符cmd.exe的?(How to pass a quoted pipe ch

2019-06-27 03:39发布

我想要调用:

"c:\(...)\devenv.com" foo.sln /build "Debug|Win32"

使用CMD.EXE。 根据我的经验,无论是cmd.exe的剔除第一对引号(导致可执行文件无法找到)或第二对引号(导致管道字符被误解)。 如何传递带引号的管道字符cmd.exe的?

Answer 1:

你可以做你正在做的方式出现,与封闭串| 在引号。

或者你可以用抑扬口音逃避它^

"c:\(...)\devenv.com" foo.sln /build Debug^|Win32

作为一个方面说明:你为什么要建立这个与devenv的,而不是MSBuild的?



Answer 2:

插入符号(^)字符是特殊的shell字符逃避的东西像字符<,>,(,),...

cmd/c "echo Hello ^"  World"

产量

Hello " World


Answer 3:

这里是另一种解决方案(解决方法吗?)我发现:

第一,保证环境变量定义了管道字符,例如:
set PIPE="|"

以后,运行命令指定上述定义的环境变量名:
"c:\(...)\devenv.com" foo.sln /build Debug%PIPE%Win32

那请问即使是主叫用户和被叫之间的多个包装的工作。 现在,我使用它有很长的包装纸链:Python的/ Linux的 - > VirtualBox的客人executeProcess - >命令/窗口 - > devenv.com



文章来源: How to pass a quoted pipe character to cmd.exe?
标签: cmd