2014-06-11 4 views
23

Ich habe kürzlich einen Befehl in Windows cmd mit einfachen Anführungszeichen ausgeführt und festgestellt, dass es sich nicht wie erwartet verhalten hat.Was macht das einfache Zitat in Windows Batch-Dateien?

Von versuchen, über, wo die Menschen gefragt, die Fenster behandeln einfache Anführungszeichen wie doppelte Anführungszeichen google „Windows-Batch-Apostroph vs doppelte Anführungszeichen“ Ich habe ein paar Artikel gefunden, und darüber, wie bash anders einzelne und doppelte Anführungszeichen behandelt. Jedoch konnte ich nicht leicht eine explizite Erklärung dessen finden, was einfache Anführungszeichen in Windows-Batch-Befehlen tun.

Also, was tun einfache Anführungszeichen in Windows-Batch-Dateien? Führen sie überhaupt irgendeine Art von Angebotsfunktion aus?

+1

Typ: 'cmd /?' Dort gibt es eine ausführliche Beschreibung der Verwendung von Anführungszeichen. Beachten Sie, dass das Apostroph (oder "single quote") NICHT speziell in Batch-Dateien verwendet wird (außer im 'for/F'-Befehl). – Aacini

Antwort

28

Einfache Anführungszeichen sind nicht durch den cmd.exe Befehlsprozessor außer zu umschließen den Befehl auszuführen innerhalb einer FOR/F-Anweisung verwendet:

for /f %%A in ('someCommand') do ... 

Oder eine Zeichenfolge angeben, indem FOR/F zu verarbeiten wenn die usebackq Option verwendet wird:

for /f "usebackq" %%A in ('some string') do ... 

Alle anderen unter Angabe von cmd.exe behandelt wird mit doppelten Anführungszeichen getan. Es gibt jedoch Windows-Dienstprogramme (externe Befehle) wie WMIC, die für ihre eigenen Anführungszeichen einfache Anführungszeichen verwenden. Aber es gibt keinen Standard - jedem Dienstprogramm steht eine eigene Interpretation von einfachen Anführungszeichen zur Verfügung.

Die inkonsistenten Escape- und Anführungszeichen-Regeln, die von cmd.exe im Vergleich zu verschiedenen Befehlszeilen-Dienstprogrammen verwendet werden, machen es oft schwierig, die für die jeweilige Situation erforderliche korrekte Syntax zu ermitteln.

Hier sind einige wichtige Hinweise zur Verwendung von Anführungszeichen " mit cmd.exe.

  • doppelte Anführungszeichen sind eine einfache Zustandsmaschine. Die erste " wird quittiert, die nächste schaltet sie aus.

  • Alle Sonderzeichen werden als Literalwerte behandelt, wenn zitiert, außer für die % und <newLine> Zeichen immer, und das ! Zeichen, wenn verzögerte Erweiterung aktiviert ist, und die ^ Zeichen, wenn verzögerte Erweiterung aktiviert ist und ! auch erscheint irgendwo innerhalb der Linie.

  • Wenn die Quotierung deaktiviert ist, können Sie eine " als ^" vermeiden, um zu verhindern, dass die Quotierung beginnt. Aber sobald das Zitieren eingeschaltet ist, können Sie dem abschließenden " nicht entkommen. Die nächste " wird immer abzählen.