Excluir apenas alguns arquivos com o mesmo nome ao copiar usando robocopy

15

Eu tenho uma estrutura de diretórios como esta:

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

Eu quero copiar o conteúdo da pasta1 usando robocopy . Por exemplo:

robocopy folder1 destination /E

Desejo excluir o arquivo help.text que está na pasta1, mas incluir os arquivos help.txt na pasta2, pasta3 etc. Também pode haver arquivos denominados help.txt em outros lugares da estrutura de diretórios, para que não seja difícil codifique os caminhos para os arquivos a serem incluídos.

Posso usar o seguinte comando para excluir todos os arquivos denominados help.txt, mas existe uma maneira de excluir apenas o arquivo help.txt na raiz da pasta1?

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

Respostas:

15

Você deve incluir o caminho completo (incluindo a unidade) para o arquivo a ser excluído. Caminhos relativos não funcionarão.

Isso funciona:

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

Isto não:

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

Nem isso:

robocopy folder1 destination /E /XF ".\folder1\help.txt"
Pausado até novo aviso.
fonte
Você pode excluir vários arquivos como esserobocopy folder1 destination /E /XF "c:\file1" "c:\file2"
schnatterer
@ Dennis-Williamson, Obrigado por esta resposta certa. Uma pena que não funciona com caracteres curinga: robocopy folder1 destination /E /XF "c:\somedir\another dir\folder1\help.txt*"leva a um erro.
Olivier Faucheux
Então, depois de duas horas tentando outros comandos, isso funcionou. Graças um milhão!
Christopher Chipps
0

Não vejo como fazer isso por nome de arquivo. Você pode definir um atributo no arquivo que não deseja copiar e "saber" que não está em nenhum outro arquivo na árvore de origem e, em seguida, usar / xa para excluir arquivos com esse atributo.

Caso contrário, você precisará usar outra ferramenta.

Isso funcionará:

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

Na verdade, se você tivesse uma estrutura de diretórios parecida com esta:

folder1\
  help.txt
  folder1\
    help.txt

provavelmente excluiria esses dois arquivos.

wfaulk
fonte
Eu vejo que estou errado.
wfaulk 24/09/09
0

Você pode usar% CD% para fornecer o diretório atual. Isso deve ajudá-lo a excluir diretórios específicos. Mais ajuda está aqui:

/programming//a/5274061

abc
fonte