Mover arquivos através de computadores com linha de comando (Windows)

2

Eu tenho uma VM executando o XP em quais arquivos são carregados em momentos aleatórios. Eu preciso de um script ou utilitário apto para a linha de comando, que seria executado a cada X minutos (por exemplo) e MOVER todos os arquivos enviados para um diretório compartilhado em uma caixa de Win7.

Agora, o comando move da linha de comandos não é executado nas unidades, e menos nos compartilhamentos. (E dá a mensagem super útil Access denied. )

Eu poderia fazer um

copy src desr_share
rm src

... mas aqui está a parte complicada:

Quando o comando copy é executado, pode acontecer que um arquivo seja carregado ao mesmo tempo. O copy pode carregar apenas um pedaço do arquivo, ou ignorá-lo completamente e seguir em frente, mas depois, quando o rm entrar em ação, o arquivo pode ser completamente carregado, e o rm irá apagá-lo, sem ele devidamente copiados para o destino.

Então, eu preciso de algo que tenha a semântica move (copie um arquivo e exclua-o somente se for bem-sucedido), mas isso funcionaria nas máquinas.

Alguma sugestão?

PS. Não me importo se um arquivo é apenas parcialmente movido, desde que não seja excluído. Irei forçar a sobrescrever qualquer arquivo de destino e, na próxima execução, o arquivo será carregado novamente, completamente.

    
por Cristi Diaconescu 29.05.2012 / 19:19

1 resposta

4

Veja o Robocopy, que é padrão no Win7 e está disponível em um kit do microsoft dev para xp.

use robocopy /? (ou robocopy /? > drive:\path\robocopy_options.txt ) para opções.

Windows 7:

link

Windows XP:

link

    
por 29.05.2012 / 19:26