Frage robocopy Übertragungsdatei und nicht Ordner


Ich versuche zu verwenden robocopy um eine einzelne Datei von einem Ort zu einem anderen zu übertragen robocopy scheint zu denken, dass ich immer einen Ordner vorschlage. Hier ist ein Beispiel:

robocopy "c:\transfer_this.txt" "z:\transferred.txt"

Aber ich bekomme stattdessen diesen Fehler:

2009/08/11 15:21:57 ERROR 123 (0x0000007B) Accessing Source Directory c:\transfer_this.txt\

(beachten Sie das \ am Ende von transfer_this.txt)

Aber wenn ich es wie einen ganzen Ordner behandle:

robocopy "c:\folder" "z:\folder"

Es funktioniert aber dann muss ich alles in den Ordner übertragen.

Wie kann ich nur eine einzige Datei mit übertragen? robocopy?


90
2017-08-11 22:29


Ursprung


def copyFile(fromLocation,toLocation,big=False): print("copy file from " + fromLocation + " to " + toLocation) if big: iFind=fromLocation.rfind('\\') fromLocation1 = fromLocation[: (iFind+1)] fileName=fromLocation[iFind+1 :] toLocation1 = toLocation[:(toLocation.rfind('\\')+1)] strcmd="robocopy "+fromLocation1+" "+toLocation1+" "+fileName print(strcmd) os.system(strcmd) else: shutil.copy2(fromLocation,toLocation) - Gank


Antworten:


Sehen: Robocopy /?

Verwendung: ROBOCOPY Quellziel [Datei [Datei] ...] [Optionen]

robocopy c:\folder d:\folder transfer_this.txt

116
2017-08-11 22:37



fwiw, zumindest auf win2003: Das Zitieren von Verzeichnispfaden scheint es schwierig zu machen. - samsmith
@samsmith Ich habe es Schluckauf gesehen, wenn Sie ein \ vor dem schließenden Zitat haben (zB: ROBOCOPY "c: \ folder1 \" c: \ folder2 Datei wird nicht funktionieren, aber: ROBOCOPY "c: \ folder1" c: \ folder2 Datei tut das. Ich nehme an, es ist ein Text entkommen Sache - Mike Goatly
@MikeGoatly Ausgezeichneter Punkt. Robocopy mag keine nachgestellte \. Es möchte, dass Sie die Verzeichnisse als "Namen" benennen und nicht implizieren wollen, dass es irgendetwas anderes als ein Verzeichnis akzeptiert. - samsmith


Laut dem Wikipedia-Artikel über Robocopy:

Ordnerkopierer, nicht Dateikopierer

Die Robocopy-Syntax unterscheidet sich deutlich von Standardkopierbefehlen, da nur Ordnernamen als Quell- und Zielargumente akzeptiert werden. Dateinamen und Platzhalterzeichen (wie z. B. *.*) sind keine gültigen Quell- oder Zielargumente. Dateien können ausgewählt oder ausgeschlossen werden, indem das optionale Filespec-Filtering-Argument verwendet wird. Filespecs können nur auf die Dateinamen verweisen, die sich auf die bereits zum Kopieren ausgewählten Ordner beziehen. Vollqualifizierte Pfadnamen werden nicht unterstützt.

Zum Beispiel, um die Datei zu kopieren foo.txt aus dem Verzeichnis c:\bar zu c:\baz, könnte man die folgende Syntax verwenden:

robocopy c:\bar c:\baz foo.txt


16
2017-08-30 23:47



Eine Sache, die mir aufgefallen ist. Wenn C: \ bar irgendwelche Ordner enthält und die Option / e hinzugefügt wurde. Es erstellt alle Ordner ohne Dateien neu. Ich nehme an, da die foo.txt wie ein Filter funktioniert und keine Dateien in diesen Ordnern gefunden werden konnte und Sie leere Ordner behalten. Deshalb werden die leeren Ordner erstellt. - Donny V


Versuchen Sie, ein Leerzeichen vor dem Ziel einzufügen:

robocopy "c:\transfer_this.txt" "z: \this.txt" 

bemerke den Raum  nach dem Ziel "Ordner" z:.


1
2018-06-29 20:37



Dies funktionierte nicht für mich, ich musste @ KPWINCs Anweisungen folgen und den Dateinamen aus dem Quellpfad herauslassen. - influent
Dies ist eine Trollantwort? Versucht und funktioniert nicht (noch scheint es, als hätte es funktioniert). - Pacerier


robocopy F: \ Dopbox "Microsoft Office.zip" / MT: 128


-4
2018-06-04 10:31



Name der Robocopy-Quellzieldatei - Dale
Ein Befehl ohne Erklärung ist keine nützliche Antwort. - kasperd