Vraag robocopy overdrachtsbestand en niet map


Ik probeer te gebruiken robocopy om een ​​enkel bestand van de ene naar de andere locatie over te brengen, maar robocopy lijkt te denken dat ik altijd een map specificeer. Hier is een voorbeeld:

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

Maar in plaats daarvan krijg ik deze foutmelding:

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

(merk op \ aan het einde van transfer_this.txt)

Maar als ik het als een hele map behandel:

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

Het werkt, maar dan moet ik alles in de map overbrengen.

Hoe kan ik slechts een enkel bestand overzetten met robocopy?


90
2017-08-11 22:29


oorsprong


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


antwoorden:


Zien: Robocopy /?

Gebruik: ROBOCOPY-bronbestemming [bestand [bestand] ...] [opties]

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

116
2017-08-11 22:37



fwiw, in ieder geval in win2003: het citeren van mappaden lijkt het te hikken. - samsmith
@samsmith Ik heb het zien hikken toen je een \ before the closing quote hebt (dat wil zeggen: ROBOCOPY "c: \ folder1 \" c: \ folder2 bestand zal niet werken maar: ROBOCOPY "c: \ folder1" c: \ folder2 bestand doet. Ik verwacht dat het een sms-bericht is - Mike Goatly
@MikeGoatly Uitstekend punt. Robocopy houdt niet van trailing \. Het wil dat je de mappen een naam geeft en niet wil impliceren dat het iets anders dan een map accepteert. - samsmith


Volgens het Wikipedia-artikel over Robocopy:

Folder copier, niet bestands copier

Robocopy-syntaxis verschilt duidelijk van standaard kopieeropdrachten, omdat alleen mapnamen als bron- en bestemmingsargumenten worden geaccepteerd. Bestandsnamen en jokertekens (zoals *.*) zijn geen geldige bron- of bestemmingsargumenten. Bestanden kunnen worden geselecteerd of uitgesloten met behulp van het optionele filespec-filterargument. Filespecs kunnen alleen verwijzen naar de bestandsnamen ten opzichte van de mappen die al zijn geselecteerd om te kopiëren. Volledig gekwalificeerde padnamen worden niet ondersteund.

Bijvoorbeeld om het bestand te kopiëren foo.txt van map c:\bar naar c:\baz, zou men de volgende syntaxis kunnen gebruiken:

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


16
2017-08-30 23:47



Een ding dat mij opviel. Als de C: \ -balk mappen bevat en de optie / e is toegevoegd. Hiermee worden alle mappen opnieuw gemaakt zonder bestanden. Ik denk dat het foo.txt werkt als een filter en geen bestanden in die mappen kan vinden en dat je lege mappen kunt bewaren. Dat is waarom de lege mappen zijn gemaakt. - Donny V


Probeer een spatie in te voegen voor de bestemming, zoals deze:

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

let op de ruimte  na de bestemming "map" z:.


1
2018-06-29 20:37



Dit werkte niet voor mij, ik moest de instructies van @ KPWINC volgen en de bestandsnaam buiten het bronpad houden. - influent
Dit is een trollenantwoord? Geprobeerd en werkt niet (en het lijkt ook niet te werken). - Pacerier


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


-4
2018-06-04 10:31



Bronbestandsnaam van Robocopy - Dale
Een opdracht zonder uitleg is geen bruikbaar antwoord. - kasperd