Excluya solo algunos archivos con el mismo nombre al copiar con robocopy

15

Tengo una estructura de directorios como esta:

folder1\
    help.txt
    folder2\
        help.txt
    folder3\
        help.txt
    ...

Quiero copiar el contenido de la carpeta1 usando robocopy . Por ejemplo:

robocopy folder1 destination /E

Quiero excluir el archivo help.text que está en la carpeta1 pero incluir los archivos help.txt en la carpeta2, la carpeta3, etc. También puede haber archivos llamados help.txt en otra parte de la estructura del directorio, por lo que no quiero tener que trabajar duro codifique las rutas a los archivos a incluir.

Puedo usar el siguiente comando para excluir todos los archivos llamados help.txt, pero ¿hay alguna manera de excluir el archivo help.txt en la raíz de la carpeta1?

robocopy folder1 destination /E /XF help.txt
Daniel Richardson
fuente

Respuestas:

15

Debe incluir la ruta completa (incluida la unidad) al archivo para excluir. Los caminos relativos no funcionarán.

Esto funciona:

robocopy folder1 destination /E /XF "c:\somedir\another dir\folder1\help.txt"

Esto no:

robocopy folder1 destination /E /XF "folder1\help.txt"

Tampoco esto:

robocopy folder1 destination /E /XF ".\folder1\help.txt"
Pausado hasta nuevo aviso.
fuente
Puede excluir varios archivos como esterobocopy folder1 destination /E /XF "c:\file1" "c:\file2"
schnatterer
@ Dennis-Williamson, gracias por esta respuesta correcta. Una lástima que no funcione con comodines: robocopy folder1 destination /E /XF "c:\somedir\another dir\folder1\help.txt*"conduce a un error.
Olivier Faucheux
Entonces, después de 2 horas de probar otros comandos, esto funcionó. ¡Un millón de gracias!
Christopher Chipps el
0

No veo que haya alguna forma de hacerlo por nombre de archivo. Puede establecer un atributo en el archivo que no desea copiar que "sepa" que no está en ningún otro archivo en el árbol de origen y luego usar / xa para excluir archivos con ese atributo.

Sin embargo, si falla, necesitará usar otra herramienta.

Esto funcionará:

echo folder1\help.txt > \temp\excl.txt
xcopy /E folder1 destination /EXCLUDE:\temp\excl.txt

En realidad, si tuviera una estructura de directorio similar a esta:

folder1\
  help.txt
  folder1\
    help.txt

probablemente excluiría ambos archivos.

wfaulk
fuente
Ya veo que estoy equivocado.
wfaulk
0

Puede usar% CD% para obtener el directorio actual. Esto debería ayudarlo a excluir directorios específicos. Más ayuda está aquí:

/programming//a/5274061

a B C
fuente