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\*.*

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\*.*""

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"

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 

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\*.*"

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).


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\*.*")

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


2

Fügen Sie einfach ein Anführungszeichen hinzu

Beispiel: "C: \ Benutzer \ Benutzername"

Hoffe es wurde gelöst!


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


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""

-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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.