mir gui ejemplos descargar copyall robocopy

gui - Cómo excluir subdirectorios en el destino mientras se usa el modificador/mir/xd en robocopy



robocopy/copyall (6)

Hay un script en ejecución que refleja un montón de carpetas de un volumen a otro. El problema es que ahora habrá subdirectorios dentro de esas carpetas en el destino que no forman parte del script de creación de reflejo original. Son subdirectorios independientes y no quiero que se eliminen una vez que se activa el reflejo. ¿Hay alguna manera de que use el /xd en robocopy en el que podría excluir los subdirectorios de destino?

Ejemplo:

robocopy "//hq04t2fis202/archive/dr" "//hq04t3fis202/archive/dr" /mir /xd "//hq04t3fis202/archive/dr/*/hq04s2dba301"

En el ejemplo anterior, hay varios directorios bajo //hq04t2fis202/archive/dr que están siendo duplicados. Y en el destino, una vez que estos directorios se reflejan desde el origen, hay otro script que vuelca subdirectorios separados dentro de cada uno de esos directorios. Entonces, lo que quiero hacer es usar de alguna manera el modificador / xd para evitar purgar esos subdirectorios en el destino. Además, en el ejemplo anterior, en el /xd , estoy usando el comodín "*" para indicar que quiero incluir todos los directorios que se encuentran en la carpeta raíz "//hq04t3fis202/archive/dr" en el destino .

Necesito ayuda y sugerencias sobre si esto es posible, y si es así, ¿cómo puedo hacerlo? Hasta ahora he probado y probado muchos otros conmutadores como /xo , /xx , pero ninguno de ellos resuelve mi propósito. Además, /xx funcionaría, excepto que ahora no eliminará ninguna carpeta en el destino y no se duplicará.

Con suerte no estoy confundiendo demasiado a todos aquí. Hazme saber si tienes alguna pregunta.


Cuando probé la solución con / XD, encontré que la ruta a excluir debería ser la ruta de origen, no el destino.

por ejemplo, esto funciona

robocopy c:/test/a c:/test/b /MIR /XD c:/test/a/leavethisdiralone/


Dentro del archivo de ayuda de robocopy, la opción / MIR se explica a continuación.

/ MIR :: MIRore un árbol de directorios (equivalente a / E más / PURGAR).

Aquí está la explicación para los modificadores / E y / PURGE:

/ E :: copie los subdirectorios, incluidos los vacíos.

/ PURGE :: elimina los archivos / dirs que ya no existen en la fuente.

Podría evitar eliminar esos subdirectorios cambiando "/ E" por "/ MIR" en su comando robocopy. Sin embargo, esta solución desactiva la purga por completo, lo que no parece ser el resultado deseado. En ese caso, desearía avanzar con la opción de cambio / XD.

Para referencia, es posible que desee enviar el archivo de ayuda a un documento de texto.

Robocopy /? > RobocopySwitches.txt


El orden de los argumentos parece importar ... para excluir subdirectorios, utilicé

robocopy //source/folder C:/destinationfolder /XD * /MIR

... y eso me funciona (copia de Windows 10 de Windows Server 2016)


El problema es que aunque agreguemos una carpeta para omitir la lista, se eliminará si no existe.

La solución es agregar el destino y la carpeta de origen con la ruta completa.

Trataré de explicar los diferentes escenarios y lo que sucede a continuación, según mi experiencia.

A partir de la estructura de la carpeta:

d:/Temp/source/1.txt d:/Temp/source/2/2.txt

Mando:

robocopy D:/Temp/source D:/Temp/dest /MIR

Esto copiará todos los archivos y carpetas que faltan y eliminará todos los archivos y carpetas que no se pueden encontrar en la fuente

Agreguemos una nueva carpeta y luego agreguémosla al comando para omitirla.

Nueva estructura:

d:/Temp/source/1.txt d:/Temp/source/2/2.txt d:/Temp/source/3/3.txt

Mando:

robocopy D:/Temp/source D:/Temp/dest /MIR /XD "D:/Temp/source/3"

Si agrego / XD con la carpeta de origen y ejecuto el comando, todo parece correcto, el comando sobre el que no se copiará.

Ahora agregue una carpeta al destino para obtener esta configuración:

d:/Temp/source/1.txt d:/Temp/source/2/2.txt d:/Temp/source/3/3.txt d:/Temp/dest/1.txt d:/Temp/dest/2/2.txt d:/Temp/dest/3/4.txt

Si ejecuto el comando aún está bien, 4.txt permanece allí 3.txt no se copia. Todo está bien.

Pero, si elimino la carpeta de origen "d: / Temp / source / 3" , la carpeta de destino y el archivo se eliminarán aunque esté en la lista de omisión

1 D:/Temp/source/ *EXTRA Dir -1 D:/Temp/dest/3/ *EXTRA File 4 4.txt 1 D:/Temp/source/2/

Si cambio el comando para omitir la carpeta de destino en su lugar, entonces la carpeta no se elimina, cuando falta la carpeta en el origen.

robocopy D:/Temp/source D:/Temp/dest /MIR /XD "D:/Temp/dest/3"

Por otro lado, si la carpeta existe y hay archivos, los copiará y eliminará:

1 D:/Temp/source/3/ *EXTRA File 4 4.txt 100% New File 4 3.txt

Para asegurarnos de que la carpeta siempre se omita y no se copien archivos, incluso si falta la carpeta de origen o de destino, debemos agregar ambos a la lista de omisión:

robocopy D:/Temp/source D:/Temp/dest /MIR /XD "d:/Temp/source/3" "D:/Temp/dest/3"

Después de esto, no importa si falta la carpeta de origen o si falta la carpeta de destino, robocopy lo dejará como está.


En lugar de crear directorios vacíos en el origen para excluirlos, puede proporcionar la ruta de destino completa al conmutador / XD para que no se toquen los directorios de destino.

robocopy "%SOURCE_PATH%" "%DEST_PATH%" /MIR /XD "%DEST_PATH%"/hq04s2dba301


La forma en que puede excluir un directorio de destino mientras usa / mir es asegurándose de que el directorio de destino también exista en el origen. Entré en mi unidad de origen y creé directorios en blanco con el mismo nombre que en el destino, y luego agregué ese nombre de directorio a / xd. Reflejó con éxito todo mientras excluía el directorio en la fuente, dejando así el directorio en el destino intacto.