Wie verwende ich Leerzeichen in der Eingabeaufforderung?

188

Wie kann ich Leerzeichen in der Windows-Befehlszeile verwenden?

cmd /C C:\Program Files (x86)\WinRar\Rar.exe a D:\Hello 2\File.rar D:\Hello 2\*.*
faressoft
quelle

Antworten:

257

Einfache Anführungszeichen reichen in diesem Fall nicht aus. Sie müssen um jeden Pfad Anführungszeichen setzen und den gesamten Befehl in Anführungszeichen setzen:

cmd /C ""C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*""
Sakra
quelle
4
Ja, jeder Pfad sollte in Anführungszeichen gesetzt werden. Außerdem musste der gesamte Befehl erneut in Anführungszeichen gesetzt werden. Jetzt gehts! Vielen Dank!
Stehen Sie
@ Sakra funktioniert auch nicht für mich. "" C: \ Programme \ WinRAR \ WinRAR.exe "a "C: \ Veri Tabani yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.rar" -ri1 -mt2 -m5 "C: \ Veri Tabani yedekler \ Dedicated_Pokemon_Pets_DB_Backup_2014_7_10_7_2.bak""
MonsterMMORPG
3
@MonsterMMORPG Präfix der Zeile mitcmd /C
Sakra
@sakra Ich möchte eine Datei mit einem Namen mit Leerzeichen ausschließen CEEMEA & LATAM.doc. Was soll ich machen? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq
hat bei mir funktioniert, aber ohne die Anführungszeichen von außen: "C: \ Programme (x86) \ WinRar \ Rar.exe" a "D: \ Hello 2 \ File.rar" "D: \ Hello 2 \"
user1620090
77

Ich habe gerade herausgefunden, dass für einen Fall, in dem der Pfad Leerzeichen verwendet, beispielsweise wenn ich auf die App zugreifen muss, xyzwelcher Speicherort:

C:\Program Files\ab cd\xyz.exe

Um dies über die Windows-Cmd-Eingabeaufforderung auszuführen, müssen Sie verwenden

C:\"Program Files"\"ab cd"\xyz.exe

oder

"C:\Program Files\ab cd\xyz.exe"
Mithil D.
quelle
22

Wenn doppelte Anführungszeichen das Problem nicht lösen, versuchen Sie es z

dir /X ~1 c:\

um eine Liste alternativer Datei- oder Verzeichnisnamen zu erhalten. Beispielausgabe:

11/09/2014 12:54 AM             8,065  DEFAUL~1.XML Default Desktop Policy.xml
06/12/2014  03:49 PM    <DIR>          PROGRA~1     Program Files 
10/12/2014  12:46 AM    <DIR>          PROGRA~2     Program Files (x86)

Verwenden Sie nun in Ihren Befehlen den kurzen 8-stelligen Datei- oder Ordnernamen in der 5. Spalte, z. B. PROGRA ~ 1 oder DEFAUL ~ 1.XML. Zum Beispiel:

set JAVA_HOME=c:\PROGRA~1\Java\jdk1.6.0_45 
rob2universe
quelle
Dies ist der einfache Weg. Kein Doppel-Doppel-Zitat-Mist.
Dave Anderson
Ist Ihnen bewusst, dass Short 8.3 eine NTFS-Option ist und deaktiviert werden kann? Verlasse dich nicht darauf.
Zan Lynx
10

Schließen Sie die Pfade mit Leerzeichen in doppelte Anführungszeichen ein.

cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
JAB
quelle
Dann liegt das Problem darin, wie die Argumentsyntax Rar.exetatsächlich lautet. Möglicherweise verwenden Sie es falsch. Vielleicht versuchen "D:\Hello 2\"oder "D:\Hello 2"statt "D:\Hello 2\*.*"?
JAB
cmd / C "C: \ Programme (x86) \ WinRar \ Rar.exe" a D: \ Hello \ File.rar D: \ Hello *. * (Es hat keine Leerzeichen und es funktioniert), aber wie mit Räumen umgehen?
Faressoft
@JAB, wenn Sie eine Datei mit einem Namen mit Leerzeichen wie ausschließen müssen CEEMEA & LATAM.doc. Was soll es sein "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
Ibn e Ashiq
10

Versuchen Sie, komplexe Pfadnamen in doppelten Anführungszeichen anzugeben (und fügen Sie am Ende Dateierweiterungen für Dateien hinzu.)

Für Dateien:

call "C:\example file.exe"

Für Verzeichnis:

cd "C:\Users\User Name\New Folder"

CMD interpretiert Text mit doppelten Anführungszeichen ("xyz") als eine Zeichenfolge und Text in einfachen Anführungszeichen ('xyz') als Befehl. Beispielsweise:

FOR %% A in ('dir / b / s * .txt') do ('Befehl')

FOR %% A in ('dir / b / s * .txt') do (Echo "%% A")

Und eine gute Sache, cmd unterscheidet nicht zwischen Groß- und Kleinschreibung wie Bash. "New fiLE.txt" und "new file.TXT" sind also ähnlich.

* Hinweis: Bei den Variablen %% A im obigen Fall wird zwischen Groß- und Kleinschreibung unterschieden (%% A ungleich %% a).

Vaisak Mohan
quelle
Zählen Unterstriche in Dateinamen? Wie 'Dateiname' vs 'Dateiname'
SqueakyBeak
7

Ich ziehe es vor, den ()gültigen Befehl einzuschließen, batchwas das Lesen etwas erleichtert:

cmd /C ("C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*")
Dan
quelle
3
set "CMD=C:\Program Files (x86)\PDFtk\bin\pdftk"
echo cmd /K ""%CMD%" %D% output trimmed.pdf"
start cmd /K ""%CMD%" %D% output trimmed.pdf"

Das hat bei mir in einer Batch-Datei funktioniert

James Brown
quelle
2

Fügen Sie einfach ein Anführungszeichen hinzu

Beispiel: "C: \ Benutzer \ Benutzername"

Hoffe es wurde gelöst!

Patrick Prakash
quelle
7
Das Gleiche wurde bereits ein halbes Dutzend Mal gesagt. Welchen zusätzlichen Wert bringt dies?
JJJ
1

Sie sollten versuchen, Anführungszeichen zu verwenden.

cmd /C "C:\Program Files (x86)\WinRar\Rar.exe" a "D:\Hello 2\File.rar" "D:\Hello 2\*.*"
Jaanus
quelle
2
Dies ist nicht zuverlässig. In bestimmten Fällen (siehe microsoft.com/resources/documentation/windows/xp/all/proddocs/… - Verarbeiten von Anführungszeichen) wird stattdessen eine Datei "C: \ Program.bat" ausgeführt.
Micha Wiedenmann
0

Leerzeichen in der Eingabeaufforderung (in einer VBA-Shell-Befehlscodezeile)

Ich hatte ein sehr ähnliches Problem, das bei der Automatisierung über VBA ein Leerzeichen in der Eingabeaufforderung war, um den Inhalt aus dem Befehlsfenster in eine Textdatei zu übertragen. Dieser Thread war einer von vielen, die ich auf dem Weg gefangen habe und die mir nicht ganz die Lösung gebracht haben.

Dies kann anderen bei einem ähnlichen Problem helfen: Da es immer schwierig ist, die Syntax mit Anführungszeichen zu korrigieren, halte ich es immer für nützlich, einige spezifische Beispiele zu zeigen. Das zusätzliche Problem, das Sie bei der Verwendung der Eingabeaufforderung in VBA über das Shell-Ding erhalten, ist, dass die Codezeile häufig nicht fehlerhaft ist, wenn etwas schief geht: Tatsächlich führt ein Blinken des schwarzen Empfehlungsfensters dazu, dass etwas getan wurde.

Als Beispiel ... sagen wir, ich habe einen Ordner mit einer Textdatei wie bei

C: \ Alans Folder \ test1.txt ( https://imgur.com/FELSdB6 )

Der Platz im Ordnernamen gibt das Problem an.

So etwas würde funktionieren, vorausgesetzt, der Ordner AlansFolder existiert

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:\AlansFolder\test1.txt"""
End Sub

Das wird nicht funktionieren. (Es wird kein Fehler).

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > C:\Alans Folder\test1.txt"""
End Sub

Wenn Sie Anführungszeichenpaare um den Pfad einfügen, funktioniert dies

Sub ShellBlackCommandPromptWindowAutomatingCopyingWindowContent()
 Shell "cmd.exe /c ""ipconfig /all > ""C:\Alans Folder\test1.txt"""""
End Sub

(Übrigens, wenn die Textdatei nicht existiert, wird sie erstellt).

Im Nachhinein können wir sehen, dass meine Lösung in etwa mit einigen bereits gegebenen übereinstimmt.

Konvertieren Sie diese Codezeile in einen manuellen Befehl, den wir hätten

ipconfig /all > "C:\Alans Folder\test1.txt"

Das scheint zu funktionieren

Das funktioniert auch

ipconfig /all > C:\AlansFolder\test1.txt

Das geht nicht

ipconfig /all > C:\Alans Folder\test1.txt

Diese endgültige Form funktioniert auch und knüpft an die Lösung von Sacra an. “ Sie müssen um jeden Pfad Anführungszeichen setzen und den gesamten Befehl in Anführungszeichen setzen “… ..

cmd.exe /c "ipconfig /all > "C:\Alans Folder\test1.txt""
Alan Elston
quelle
-3

Es kann dieses Problem mit dem Befehl cd lösen. Dieser Befehl versteht Leerzeichen ohne doppelte Anführungszeichen und Sie können jedes Programm folgendermaßen aufrufen:

C: \ Windows \ system32> cd c: \ Programme \ MongoDB \ Server \ 3.2 \ bin

c: \ Programme \ MongoDB \ Server \ 3.2 \ bin> Die Eingabeaufforderung von mongo now ruft mongo.exe auf

Karen
quelle