Antworten:
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\*.*""
cmd /C
CEEMEA & LATAM.doc
. Was soll ich machen? "C:\Program Files\WinRAR\rar" a -agmmddyy -x*CEEMEA & LATAM.doc ".rar"
Ich habe gerade herausgefunden, dass für einen Fall, in dem der Pfad Leerzeichen verwendet, beispielsweise wenn ich auf die App zugreifen muss, xyz
welcher 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"
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
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\*.*"
Rar.exe
tatsächlich lautet. Möglicherweise verwenden Sie es falsch. Vielleicht versuchen "D:\Hello 2\"
oder "D:\Hello 2"
statt "D:\Hello 2\*.*"
?
CEEMEA & LATAM.doc
. Was soll es sein "C:\Program Files\WinRAR\rar" a -x*CEEMEA & LATAM.doc ".rar"
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).
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
Fügen Sie einfach ein Anführungszeichen hinzu
Beispiel: "C: \ Benutzer \ Benutzername"
Hoffe es wurde gelöst!
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\*.*"
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""
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