Question Robocopy fichier de transfert et non dossier


J'essaie d'utiliser robocopy transférer un seul fichier d'un endroit à un autre, mais robocopy semble penser que je spécifie toujours un dossier. Voici un exemple:

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

Mais je reçois cette erreur à la place:

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

(noter la \ au bout du transfer_this.txt)

Mais si je le traite comme un dossier entier:

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

Cela fonctionne mais ensuite je dois tout transférer dans le dossier.

Comment puis-je transférer un seul fichier avec robocopy?


90
2017-08-11 22:29


origine


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


Réponses:


Voir: Robocopy /?

Utilisation: source de ROBOCOPY [fichier [fichier] ...] [options]

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

116
2017-08-11 22:37



Fwiw, du moins sur Win2003: citer les chemins de répertoires semble faire hic. - samsmith
@samsmith J'ai vu un hoquet lorsque vous avez un \ avant le dernier mot (par exemple: ROBOCOPY "c: \ dossier1 \" c: \ dossier2 ne fonctionnera pas mais: ROBOCOPY "c: \ dossier1" c: \ dossier2 Je pense que c'est un fichier qui s'échappe - Mike Goatly
@ MikeGoatly Excellent point. Robocopy n'aime pas trailer \. Il souhaite que vous nommiez les répertoires en tant que "noms" et n'implique en aucune manière qu'il accepte autre chose qu'un répertoire. - samsmith


Selon l'article de Wikipedia sur Robocopy:

Copieur de dossier, pas de copieur de fichier

La syntaxe de Robocopy est très différente des commandes de copie standard, car elle accepte uniquement les noms de dossier comme arguments source et cible. Noms de fichiers et caractères génériques (tels que *.*) ne sont pas des arguments source ou de destination valides. Les fichiers peuvent être sélectionnés ou exclus à l'aide de l'argument de filtrage optionnel de fichiers. Les fichiers de fichiers ne peuvent faire référence qu'aux noms de fichiers relatifs aux dossiers déjà sélectionnés pour la copie. Les noms de chemin complets ne sont pas pris en charge.

Par exemple, pour copier le fichier foo.txt de l'annuaire c:\bar à c:\baz, on pourrait utiliser la syntaxe suivante:

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


16
2017-08-30 23:47



Une chose que j'ai remarquée. Si C: \ bar contient des dossiers et que l'option / e a été ajoutée. Il va recréer tous les dossiers sans fichiers. Je suppose que puisque le fichier foo.txt agit comme un filtre, il est impossible de trouver des fichiers dans ces dossiers et vous conservez des dossiers vides. C'est pourquoi les dossiers vides sont créés. - Donny V


Essayez d'insérer un espace avant la destination, comme ceci:

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

remarquez l'espace  après la destination "dossier" z:.


1
2018-06-29 20:37



Cela n'a pas fonctionné pour moi, j'ai dû suivre les instructions de @ KPWINC et laisser le nom du fichier en dehors du chemin source. - influent
Ceci est une réponse troll? Essayé et ne fonctionne pas (il ne semble pas non plus que cela aurait fonctionné). - Pacerier


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


-4
2018-06-04 10:31



Nom du fichier source de la copie - Dale
Une commande sans explication n'est pas une réponse utile. - kasperd