Copia de archivo por lotes y mover sin sobrescribir

1

Estoy tratando de crear un archivo por lotes (para ejecutarse en segundo plano) que copiará un solo archivo sin sobrescribir ningún archivo en el destino con el mismo nombre, y luego moveré el archivo, nuevamente sin sobrescribir si hay un archivo en destino con el mismo nombre?

Estoy usando esto en este momento, pero está sobrescribiendo.

copy %1 dest
move %1 dest
Aeolai
fuente

Respuestas:

2

Por favor, intente esto. Funciona para un solo archivo.

echo N | copiar / -Y archivo1 archivo2

echo N | mover / -Y archivo1 archivo2

Curiosamente, parece que también funciona con comodines. Lo probé en x64 Windows 7.

Scott Rhee
fuente
1

No tengo claro lo que quiere decir al mover el mismo archivo que se acaba de copiar, pero para probar si existe un archivo, use una declaración "IF" en un script por lotes como el siguiente. (Explico con más detalle acerca de% ~ más abajo.)

IF EXIST %~dp2%~nx1 (echo file exists) ELSE (
robocopy %~dp1 %~dp2 %~nx1 /XN /XO /MOV>>testing.txt)

Lo siguiente funcionará en Windows 7, Windows 8, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012.

(Para XP, tendrás que obtenerlo del Kit de recursos, pero no solo quedan 30 días de vida en esa gema :))

El siguiente código copia un archivo del directorio de origen al directorio de destino solo si el archivo de destino no existe.

robocopy source_path dest_path filename /XN /XO

Y añadiendo / MOV moverá el archivo.

Si quieres usar parámetros, el comando sería algo como esto:

copyscript.bat C:\Dir1\filename.ext D:\path2\

Con el copyscript.bat buscando algo esto:

robocopy %~dp1 %~dp2 %~nx1 /XN /XO

Si desea enviar la salida a un registro, añada & gt; & gt; logfile.txt de esta forma:

robocopy %~dp1 %~dp2 %~nx1 /XN /XO>>logfile.txt 

Si desea mover el archivo en lugar de copiarlo, haga lo siguiente:

robocopy %~dp1 %~dp2 %~nx1 /XN /XO /MOV 
  • % ~ dp1 equivale a Directorio y Ruta del primer parámetro
  • % ~ dp2 equivale al directorio y la ruta del segundo parámetro
  • % ~ nx1 equivale al nombre del archivo y la tensión del primer parámetro
  • / XN incluye nuevos archivos durante la copia
  • / XO incluye archivos antiguos durante la copia
  • / MOV MOVES el archivo en lugar de solo copiarlo
  • agrega los resultados de salida a un archivo en lugar de a la ventana de cmd (use solo una & gt; si desea sobrescribir el registro cada vez)

  • de forma predeterminada, la copia automática no sobrescribe el archivo si las marcas de fecha y hora son las mismas.

El sitio de Simon Sheppard es un buen recurso de script por lotes, la sintaxis de los argumentos está aquí. http://ss64.com/nt/syntax-args.html

La información de robocopy de Microsoft está aquí. http://technet.microsoft.com/en-us/library/cc733145.aspx

RJ_
fuente