archivo de transferencia de robocopy y no carpeta

99

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

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

Pero recibo este error en su lugar:

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

(tenga \en cuenta el al final de transfer_this.txt)

Pero si lo trato como una carpeta completa:

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

Funciona pero luego tengo que transferir todo en la carpeta.

¿Cómo puedo transferir un solo archivo robocopy?

Kevin Panko
fuente
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:

129

Ver: Robocopy /?

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

robocopy c:\folder d:\folder transfer_this.txt
KPWINC
fuente
fwiw, al menos en win2003: Citar rutas de directorio parece hacer que sea un hipo.
samsmith
1
@samsmith Lo he visto tener problemas cuando tienes un \ antes de la cita de cierre (es decir: el archivo ROBOCOPY "c: \ folder1 \" c: \ folder2 no funcionará pero: ROBOCOPY "c: \ folder1" c: \ folder2 el archivo sí. Supongo que es una
cuestión de
1
@MikeGoatly Excelente punto. A Robocopy NO le gusta seguir \. Quiere que nombre los directorios como "nombres" y no quiere implicar de ninguna manera que acepte otra cosa que no sea un directorio.
samsmith
19

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

Copiadora de carpetas, no copiadora de archivos

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

Por ejemplo, para copiar el archivo foo.txtdel directorio c:\bara c:\baz, uno podría usar la siguiente sintaxis:

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

Adrian De Leon
fuente
Una cosa me di cuenta. Si C: \ bar tiene alguna carpeta y se ha agregado la opción / e. Volverá a crear 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. Por eso se crean las carpetas vacías.
Donny V
1

Intente insertar un espacio antes del destino, así:

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

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

usuario296831
fuente
3
Esto no funcionó para mí, tuve que seguir las instrucciones de @ KPWINC y dejar el nombre del archivo fuera de la ruta de origen.
influyente
3
Esta es una respuesta troll? Probado y no funciona (ni parece que hubiera funcionado).
Pacerier
-4

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

Valle
fuente
Nombre de archivo de destino de origen de Robocopy
Dale
66
Un comando sin explicación no es una respuesta útil.
kasperd