Frage

Ich möchte aufrufen:

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

Verwenden von CMD.exe. Nach meiner Erfahrung streift Cmd.exe entweder das erste Paar von Zitaten (wodurch die ausführbare Datei nicht gefunden wird) oder das zweite Paar von Zitaten (was dazu führt, dass der Rohrcharakter falsch interpretiert wird). Wie übergeben Sie ein zitiertes Rohrcharakter an cmd.exe?

War es hilfreich?

Lösung

Sie können es entweder so machen, wie Sie dort tun | in Anführungszeichen.

Oder Sie können es mit dem entkommen Circumflex -Akzent ^:

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

Als Randnotiz: Warum bauen Sie dies mit Devenv anstelle von MSBuild?

Andere Tipps

Der Caret (^) -Scharakter ist spezielle Muschelzeichen, um dem Charakter für Dinge wie <,>, (,), ...

cmd/c "echo Hello ^"  World"

Ausgabe

Hello " World

Hier ist eine andere Lösung (Problemumgehung?) Ich habe festgestellt:

Stellen Sie zunächst sicher, dass eine Umgebungsvariable das Rohrcharakter definiert, zum Beispiel:
set PIPE="|"

Führen Sie später den Befehl aus, in dem der oben genannte definierte Variable -Name für Umgebungsvariablen angegeben wird:
"c:\(...)\devenv.com" foo.sln /build Debug%PIPE%Win32

Das erledigt den Job, auch wenn zwischen dem Anrufer und dem Callee mehrere Wrapper vorhanden sind. Ich benutze es jetzt mit einer sehr langen Kette von Wrappern: Python/Linux -> VirtualBox Guest ExecuteProcess -> CMD/Windows -> Devenv.com

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top