Excluindo todos os arquivos do diretório de origem após o robocopy, mas retendo aqueles que causam erros

0

Eu pretendo usar o robocopy para mover arquivos e pastas de um diretório em um servidor para um diretório em um disco rígido, usando o seguinte comando,

robocopy [fonte] [destino] / e / move / xo

No caso de um conflito de nome de arquivo, eu entendo isso para substituir os arquivos no disco rígido somente se for mais recente (ou exatamente a mesma idade?) e, em seguida, para excluir os arquivos que foram copiados.

Idealmente, gostaria que o diretório de origem fosse limpo de arquivos, mas suspeito que possa haver um problema; se um arquivo não for transferido (talvez esteja em uso no momento ou exista uma versão mais recente no destino), ele não será excluído.

No caso de um erro real no processo de cópia (por exemplo, se o robocopy se recusar a mover um arquivo em uso), não posso simplesmente adicionar um comando subsequente para excluir todo o diretório de origem, pois isso poderia resultar na perda de dados que não foram transferidos.

Eu planejo usar isso como um arquivo em lote que é executado como uma tarefa agendada pelo Windows regularmente.

A minha pergunta é, portanto: existe uma forma automatizada simples de fazer com que o robocopy exclua os arquivos que foram transferidos corretamente (como já faz) ou aqueles para os quais já existem cópias mais recentes no destino (o que não faz atualmente) ), mantendo os arquivos que não foram transferidos devido a algum outro erro (por exemplo, permissões, arquivo em uso, etc.)?

Existe talvez uma maneira mais simples de fazer isso?

    
por someone 03.08.2016 / 21:42

1 resposta

0

Para operações como esta, eu costumo usar o switch espelho, (/ mir), você pode duplicar um diretório para um segundo local, quando as coisas são movidas para fora da fonte, elas também são deletadas do destino. Eu sei que isso pode não funcionar na sua situação.

Você pode precisar apenas de uma maneira de limpar os arquivos do diretório de origem quando eles forem considerados antigos o suficiente. Será que algo como um segundo trabalho rodando para os arquivos funciona para você?

forfiles / d -14 / p C: \ myfolder / C "cmd / c del @ arquivo"

Isso limpará todos os arquivos com mais de 14 dias.

    
por 04.08.2016 / 23:38