2011-03-01 40 views
17

Enviaré comandos a una computadora remota para que copie un archivo. Quiero copiar el archivo, pero no sobrescribir el archivo anterior con el mismo nombre (si existe). También necesito el comando para ejecutar sin ninguna solicitud (xcopy le gusta preguntar si el nombre de destino que he especificado es archivo o directorio, y también solicitará sobrescribir un archivo).Hacer que XCopy copie un archivo y no sobrescribir el anterior si existe (sin preguntar)

Respuesta

3

No hay manera de hacerlo NO sobrescribir hasta donde yo sé. pero/Y lo sobrescribirá. y/Me desharé del indicador de archivo/dict. Consulte xcopy /? para todas las opciones

+0

Gracias ..Eventualmente tuve que hacerlo en dos etapas: primero verificar la existencia y luego actuar en consecuencia. – Vic

3

También puede usar el comando replace. Tiene dos modos: agregar archivos que no existen allí o reemplazar archivos que sí existen. Desea el modo anterior:

replace <path1> <path2> /A 
+2

Una opción OK, sin embargo, no puede usar esto con/S para incluir subdirectorios. – Merkidemis

+0

Me gusta mucho esta opción, pero tenga en cuenta que falla con "Ruta no encontrada" si la carpeta de destino no existe, y no parece haber una opción para forzar la creación de la carpeta de destino si no está presente. –

39

Tengo buenos resultados con xcopy /d.

Copiará los archivos NEWER y, como podemos suponer que los archivos existentes tienen la misma marca de tiempo, solo copiará los archivos que no existan.

+4

Utilizo xcopy source dest/d/y/s –

+0

Algo nuevo que descubrí recientemente, con respecto a xcopy/s/d/y ... al copiar la estructura del directorio, CREARÁ y luego ELIMINARÁ carpetas de destino si ningún archivo coincide con la máscara es dado. muy extraño, y a veces muy extraño. –

+0

Encontré que la opción/D realmente copia IFF, el archivo ya existe en la carpeta de destino y es MÁS VIEJO que el mismo archivo nombrado desde el código fuente. Entonces el archivo TIENE que existir primero. ¿Hay alguna manera de XCOPY si no hay ningún archivo en el destino? – Fandango68

1

Tuve que copiar Y cambiar el nombre de los archivos, así que recibí el aviso sobre la creación de un archivo o un directorio.

Este es el lugar manera, "hacker" lo hice:

ECHO F | XCOPY /D "C:\install\dummy\dummy.pdf" "C:\Archive\fffc810e-f01a-47e8-a000-5903fc56f0ec.pdf" 

XCOPY utilizará la "F" para indicar que se debe crear el destino como un archivo:

C:\install>ECHO F | XCOPY /D "C:\install\dummy\dummy.html" "C:\Archive\aa77cd6e-1d19-4eb4-b2a8-3f8fe60daf00.html" 
Does C:\Archive\aa77cd6e-1d19-4eb4-b2a8-3f8fe60daf00.html specify a file name or directory name on the target 
(F = file, D = directory)? F 
C:\install\dummy\dummy.html 
1 File(s) copied 

I También he verificado que este comando deja solo los archivos existentes. (Debe también :-)

13

sólo en caso de cualquier otra persona encuentra esto: robocopy x: \ sourcefolder Y: \ destfolder/s/e/r: 0/z

mucho mejor que xcopy, incluso da usted una tabla al final informando de cualquier archivo fallido o salteado. No solicita que no se sobrescriba.

+0

usted señor es un caballero y un erudito, al principio no pensó que "no estaba sobrescribiendo", pero luego comencé a recibir "100% nuevo archivo ....." – Captnwalker1

1

¡Bien, hay un cierto remedio! Me ayudó a ahorrar gran parte de mi esfuerzo y tiempo en Win10 mientras escribía una configuración para nuestra demostración de producto.

Sólo trate de utilizar tuberías:

@ECHO N | COPIAR/-YsourcefilesDestino

A modo de ejemplo que utiliza su pedazo de código para que yo tendría ¡una copia suave, tranquila y segura!

@FOR /D %%F in ("FooPath") DO @(
    @ECHO N|COPY /-Y ^"%%~npdxF\*.*^" ^"GooPath^" 3>NUL 2>NUL >NUL 
) 

donde obviamente Foopath es la fuente y GooPath es el destino.

¡Disfrútalo!

(fuente principal: https://ss64.com/nt/copy.html)

+0

Esto debería haber sido la respuesta oficial – Fandango68

Cuestiones relacionadas