Wie kann ich Robocopy dazu bringen, eine Protokolldatei zu verwenden, die Leerzeichen enthält?

11

Ich versuche den folgenden Befehl:

robocopy "x:\dir" "y:\dir" /mir /z /tee /fft /nfl /ndl /eta /log:"x:\path to logs\12-15-11 01 file with spaces.txt"

Ich erhalte diesen Fehler:

ERROR : Invalid Parameter #10 : "/log:x:\path to logs\12-15-11 01 file with spaces.txt"

EDIT # 1

Es stellte sich heraus, dass der obige Befehl gültig war, ich hatte einen Tippfehler in meinem Pfad. Wenn Sie einen Pfad haben, der Leerzeichen enthält, können Sie diese wie folgt für den Robocopy- / Protokollschalter bereitstellen:/log:"c:\path to a file\robocopy.log"

slm
quelle
Funktioniert bei mir. Zeigt es oben vielleicht einen detaillierteren Fehler?
Carko
Führen Sie diesen Befehl im Kontext eines Skripts aus, anstatt direkt in der Befehlszeile. Vielleicht fügt etwas anderes eine Art Flucht hinzu?
Zoredache
Die Fehlermeldung weist darauf hin, dass die anfänglichen Anführungszeichen vor und nicht nach dem Doppelpunkt stehen. Sind Sie sicher, dass der Befehl, den Sie ausführen wollten, wie gezeigt ist?
Harry Johnston
Es tut mir so leid, ich hatte einen Tippfehler im Weg. Sehr verlegen. Vielen Dank für die schnelle Hilfe aller! Wie ist das Verfahren, sollte ich diese Frage löschen? Oder kann ich es umformulieren und eine Antwort hinzufügen, aus der hervorgeht, dass Sie das Argument in / log switch of robocopy in Anführungszeichen setzen können?
Slm
Kein Grund, @slm zu löschen. Wenn Ihnen einer der oben genannten Kommentare dabei geholfen hat, das Problem zu finden, bitten Sie sie, es als Antwort zu veröffentlichen, und markieren Sie die Antwort dann als richtig. Wenn das Problem etwas ganz anderes war, schreiben Sie Ihre eigene Antwort und markieren Sie sie als Antwort, damit zukünftige Suchende prüfen können, ob sie ein ähnliches Problem haben.
music2myear

Antworten:

11

Wenn Sie einen Pfad angeben müssen, der Leerzeichen für den Robocopy- / Protokollschalter enthält, können Sie dies folgendermaßen tun:

/log:"c:\path to logs files\some log file.txt"
slm
quelle
Ich erhalte einen ungültigen Fehler: Parameter # 11 "/ log". Ich habe es am Ende eines ansonsten funktionierenden Befehls hinzugefügt.
Andrew S
Ich arbeite nicht mehr dort, wo ich Windows unterstütze, daher kann ich dies nicht testen.
Slm
Stellen Sie sicher, dass das übergeordnete Verzeichnis der Protokolldatei vorhanden ist. Robocopy wird es nicht erstellen und beschwert sich leider über den Parameter cmdline, wenn das Verzeichnis nicht vorhanden ist.
Mojo
4

Es gibt vier Möglichkeiten zur Protokollierung als Powershell-Dokumentation

/log:<LogFile> : Schreibt die Statusausgabe in die Protokolldatei (überschreibt die vorhandene Protokolldatei).

  • z.B: robocopy "c:\a" "c:\b" /log:"c:\copy_log.log"

/log+:<LogFile> : Schreibt die Statusausgabe in die Protokolldatei (hängt die Ausgabe an die vorhandene Protokolldatei an).

  • z.B: robocopy "c:\a" "c:\b" /log+:"c:\copy_log.log"

/unilog:<LogFile> : Schreibt die Statusausgabe als Unicode-Text in die Protokolldatei (überschreibt die vorhandene Protokolldatei).

  • z.B: robocopy "c:\a" "c:\b" /unilog:"c:\copy_log.log"

/unilog+:<LogFile> : Schreibt die Statusausgabe als Unicode-Text in die Protokolldatei (hängt die Ausgabe an die vorhandene Protokolldatei an).

  • z.B: robocopy "c:\a" "c:\b" /unilog+:"c:\copy_log.log"

Weitere Informationen finden Sie unter https://technet.microsoft.com/en-us/library/cc733145(v=ws.11).aspx

Nayana Adassuriya
quelle
Ich werde auch empfehlen, /teeswitch hinzuzufügen , da dies auch die Befehlszeilenausgabe erzeugt und es dem Benutzer ermöglicht, den Fortschritt des Kopierens von Dateien auch in der Befehlszeile zu sehen.
Vibs2006
1

Dies geschieht, wenn Administratorrechte / oder Pop erforderlich sind, um eine Datei in diesem Verzeichnis zu erstellen

Versuchen Sie also, ein Protokoll- / temporäres Verzeichnis zu haben, und versuchen Sie, diesem Protokollverzeichnis eine Protokolldatei hinzuzufügen

$ mkdir C:\log

z.B:

$ robocopy "c:\a" "c:\b" /log:"c:\log\copy_log.log"
jaismeensandhu
quelle
0

Wenn der Pfad zur Protokolldatei Leerzeichen oder andere Skripttrennzeichen enthält, fügen Sie ihn bitte in Anführungszeichen ein, wie dies in EDIT # 1 und @slm vorgeschlagen wird. Beachten Sie jedoch auch die Verwendung von Escape-Zeichen, wie in dieser Dokumentation zu Batch-Skripten beschrieben .

Alain
quelle
Ich habe das gleiche Problem nach einer ziemlich katastrophalen und unerwünschten Win 10-Migration.
Marc