Wie übergeben Sie ein zitiertes Rohrcharakter an cmd.exe?
-
05-07-2019 - |
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?
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