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.