68 Stimmen

Wie gehe ich mit Anführungszeichen um, wenn ich cmd.exe verwende?

Ich versuche, dies zu tun:

cmd.exe /C "C:\Program Files\Somewhere\SomeProgram.exe" > "C:\temp\Folder Containing Spaces\SomeProgram.out"

Ich habe jedoch Probleme, die auf die Funktionsweise von cmd.exe zurückzuführen sind. Wenn Sie die Hilfe dazu lesen, behandelt es die " Zeichen auf eine besondere Weise. Siehe die Hilfe am Ende der Frage. Dies wird also nicht korrekt ausgeführt... Ich vermute, dass cmd.exe einige Anführungszeichen entfernt, wodurch die Anweisung nicht mehr korrekt ist.

Ich kann dies erfolgreich tun:

// quotes not required around folder with no spaces
cmd.exe /C "C:\Program Files\Somewhere\SomeProgram.exe" > C:\temp\FolderWithNoSpaces\SomeProgram.out

Aber ich brauche die erste wirklich, um zu funktionieren. Gibt es eine Möglichkeit, die seltsame Anführungszeichenverarbeitung von cmd.exe zu umgehen? Ich möchte, dass alle Anführungszeichen erhalten bleiben, aber es scheint keine Option zu geben, die das ermöglicht.


Hilfe aus der Ausgabe von: cmd /?

Wenn /C oder /K angegeben wird, dann wird der Rest der Befehlszeile nach dem Schalter als Befehlszeile verarbeitet, wobei die folgende Logik angewendet wird zur Verarbeitung von Anführungszeichen (") verwendet wird:

1.  If all of the following conditions are met, then quote characters
    on the command line are preserved:

    - no /S switch
    - exactly two quote characters
    - no special characters between the two quote characters,
      where special is one of: &<>()@^|
    - there are one or more whitespace characters between the
      the two quote characters
    - the string between the two quote characters is the name
      of an executable file.

2.  Otherwise, old behavior is to see if the first character is
    a quote character and if so, strip the leading character and
    remove the last quote character on the command line, preserving
    any text after the last quote character.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X