我想调用:

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

使用cmd.exe。根据我的经验,cmd.exe要么删除第一对引号(导致找不到可执行文件),要么删除第二对引号(导致管道符号被误解)。 如何将引用的管道字符传递给cmd.exe?

有帮助吗?

解决方案

你可以按照你在那里的方式做到这一点,用引号将|括起来。

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

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

作为旁注:为什么要使用DevEnv而不是MSBuild构建它?

其他提示

插入符号(^)是用于转义字符的特殊shell字符,例如<!> lt;,<!> gt;,(,),...

cmd/c "echo Hello ^"  World"

输出

Hello " World

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

首先,确保环境变量定义管道符,例如:
set PIPE="|"

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

即使调用者和被调用者之间有多个包装器,它也能完成这项工作。我现在正在使用它与一个很长的包装链: Python / Linux - <!> gt; VirtualBox guest的executeProcess - <!> gt; Cmd / Windows - <!> gt; devenv.com

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top