145 votes

robocopy transfère un fichier et non un dossier

J'essaie d'utiliser robocopy pour 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 j'obtiens cette erreur à la place :

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

(notez le \ à la fin de transfer_this.txt )

Mais si je le traite comme un dossier entier :

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

Cela fonctionne mais je dois ensuite transférer tout ce qui se trouve dans le dossier.

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

0 votes

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)

187voto

KPWINC Points 11174

Voir : Robocopy /?

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

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

0 votes

Fwiw, au moins sur win2003 : La citation des chemins d'accès aux répertoires semble provoquer un hoquet.

3 votes

@samsmith Je l'ai vu hoqueter lorsque vous avez un \ avant le guillemet fermant (par exemple : ROBOCOPY "c : \folder1\ " c : \folder2 ne fonctionnera pas mais : ROBOCOPY "c : \folder1 " c : \folder2 le fait. Je pense que c'est une question d'échappement du texte.

3 votes

@MikeGoatly Excellent point. Robocopy n'aime PAS le trailing \. Il veut que vous nommiez les répertoires comme des "noms" et ne veut en aucun cas laisser entendre qu'il accepte autre chose qu'un répertoire.

23voto

Ali Points 21

Selon l'article de Wikipédia sur la Robocopie :

Copieur de dossiers, pas de fichiers

La syntaxe de Robocopy est nettement différente de celle des commandes de copie standard, car elle n'accepte que les noms de dossiers comme arguments de source et de destination. Les noms de fichiers et les caractères de remplacement (tels que *.* ) ne sont pas des arguments de source ou de destination valides. Les fichiers peuvent être sélectionnés ou exclus en utilisant l'argument optionnel de filtrage filespec. Les spécifications de fichiers peuvent uniquement faire référence aux noms de fichiers relatifs aux dossiers déjà sélectionnés pour la copie. Les noms de chemin entièrement qualifiés ne sont pas pris en charge.

Par exemple, pour copier le fichier foo.txt à partir du répertoire c:\bar à c:\baz on peut utiliser la syntaxe suivante :

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

3 votes

Une chose que j'ai remarquée. Si C:\bar contient des dossiers et l'option /e a été ajoutée. Cela recréera tous les dossiers qui ne contiennent aucun fichier. Je suppose que puisque le foo.txt agit comme un filtre et qu'il n'a pas pu trouver de fichiers dans ces dossiers, vous gardez des dossiers vides. C'est pourquoi les dossiers vides sont créés.

1voto

user296831 Points 29

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: .

3 votes

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.

7 votes

C'est une réponse de troll ? J'ai essayé et cela ne fonctionne pas (et il ne semble pas que cela aurait pu fonctionner).

-4voto

Dale Points 9

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

0 votes

Robocopy source destination nom de fichier

11 votes

Un ordre sans explication n'est pas une réponse utile.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X