質問

呼び出したい:

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

cmd.exeを使用。私の経験では、cmd.exeは最初の引用符のペア(実行可能ファイルが見つからない)または2番目の引用符のペア(パイプ文字が誤って解釈される)を取り除きます。 引用符付きパイプ文字をcmd.exeに渡す方法

役に立ちましたか?

解決

文字列を引用符で囲んで|で囲み、そこで行う方法のいずれかで実行できます。

または circumflexアクセントでエスケープすることができます ^

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

補足として:なぜMSBuildではなくDevEnvでこれを構築するのですか?

他のヒント

キャレット(^)文字は、<!> lt ;, <!> gt ;,(、)、...

などの文字をエスケープするための特別なシェル文字です
cmd/c "echo Hello ^"  World"

出力

Hello " World

私が見つけた別の解決策があります(回避策?):

最初に、環境変数がパイプ文字を定義していることを確認します。例:
set PIPE="|"

後で、上記で定義された環境変数名を指定してコマンドを実行します:
"c:\(...)\devenv.com" foo.sln /build Debug%PIPE%Win32

これは、呼び出し元と呼び出し先の間に複数のラッパーがある場合でも機能します。現在、非常に長いラッパーチェーンで使用しています。 Python / Linux-<!> gt; VirtualBoxゲストのexecuteProcess-<!> gt; Cmd / Windows-<!> gt; devenv.com

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top