質問
呼び出したい:
"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
所属していません StackOverflow