문제

호출하고 싶습니다 :

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

cmd.exe 사용. 내 경험상 CMD.Exe는 첫 번째 인용문 쌍 (실행 파일을 찾을 수 없게 함) 또는 두 번째 인용문 (파이프 문자가 잘못 해석되는 경우)을 제거합니다. 인용 된 파이프 문자를 cmd.exe에 어떻게 전달합니까?

도움이 되었습니까?

해결책

당신은 당신이 거기에서하고있는 방식으로 그것을 할 수 있고, 문자열을 | 인용 표시로.

또는 당신은 그것을 통해 그것을 피할 수 있습니다 우울한 악센트 ^:

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

부수적으로 : 왜 MSBuild 대신 Devenv로 이것을 만들고 있습니까?

다른 팁

CARET (^) 문자는 <,>, (,), ...와 같은 것들에 대한 캐릭터를 탈출하는 특별한 쉘 문자입니다.

cmd/c "echo Hello ^"  World"

산출

Hello " World

다음은 다른 해결책 (해결 방법은?)입니다.

먼저, 환경 변수가 파이프 문자를 정의하는지 확인하십시오.
set PIPE="|"

나중에 위의 정의 된 환경 변수 이름을 지정하는 명령을 실행합니다.
"c:\(...)\devenv.com" foo.sln /build Debug%PIPE%Win32

발신자와 칼리 사이에 여러 개의 포장지가 있더라도 작업이됩니다. 지금은 매우 긴 래퍼 체인 : Python/Linux-> Virtualbox Guest의 ExecuteProcess-> CMD/Windows-> devenv.com과 함께 사용하고 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top