Pregunta archivo de transferencia robocopy y no carpeta


Estoy tratando de usar robocopy para transferir un solo archivo de una ubicación a otra, pero robocopy Parece que siempre estoy especificando una carpeta. Aquí hay un ejemplo:

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

Pero me sale este error en su lugar:

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

(nota la \ al final de transfer_this.txt)

Pero si lo trato como una carpeta entera:

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

Funciona pero luego tengo que transferir todo en la carpeta.

¿Cómo puedo transferir un solo archivo con robocopy?


90
2017-08-11 22:29


origen


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


Respuestas:


Ver: Robocopy /?

Uso: ROBOCOPY origen destino [archivo [archivo] ...] [opciones]

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

116
2017-08-11 22:37



fwiw, al menos en win2003: citar las rutas del directorio parece hacer que sea un problema. - samsmith
@samsmith Lo he visto hipo cuando tiene un \ antes de la cita de cierre (es decir: ROBOCOPY "c: \ folder1 \" c: \ folder2 file no funcionará pero: ROBOCOPY "c: \ folder1" c: \ folder2 El archivo lo hace. Espero que sea un texto que se escape. - Mike Goatly
@MikeGoatly Excelente punto. A Robocopy NO le gusta arrastrarse. Quiere que usted nombre los directorios como "nombres" y no quiere implicar de ninguna manera que acepte algo que no sea un directorio. - samsmith


Según el artículo de Wikipedia sobre Robocopy.:

Copiadora de carpetas, no copiadora de archivos

La sintaxis de Robocopy es marcadamente diferente de los comandos de copia estándar, ya que solo acepta nombres de carpetas como sus argumentos de origen y destino. Nombres de archivo y caracteres comodín (como *.*) No son válidos los argumentos de origen o destino. Los archivos pueden seleccionarse o excluirse utilizando el argumento opcional de filtrado de archivos. Las especificaciones de archivo solo pueden referirse a los nombres de archivo relativos a las carpetas ya seleccionadas para copiar. Los nombres de ruta completos no son compatibles.

Por ejemplo, para copiar el archivo. foo.txt del directorio c:\bar a c:\baz, se podría usar la siguiente sintaxis:

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


16
2017-08-30 23:47



Una cosa me di cuenta. Si C: \ bar tiene alguna carpeta y se ha agregado la opción / e. Recreará todas las carpetas sin archivos en ellas. Supongo que ya que foo.txt actúa como un filtro y no pudo encontrar ningún archivo en esas carpetas y mantener las carpetas vacías. Es por eso que se crean las carpetas vacías. - Donny V


Intente insertar un espacio antes del destino, como esto:

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

nota el espacio  después de la "carpeta" de destino z:.


1
2018-06-29 20:37



Esto no me funcionó, tuve que seguir las instrucciones de @ KPWINC y dejar el nombre del archivo fuera de la ruta de origen. - influent
Esta es una respuesta troll? Lo intenté y no funciona (ni parece que hubiera funcionado). - Pacerier


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


-4
2018-06-04 10:31



Fuente de archivo de destino de robocopy - Dale
Un comando sin explicación no es una respuesta útil. - kasperd