Robocopy - como descartar timestamps

2

Estou tentando copiar alguns arquivos para uma pasta onde já existem versões mais antigas desses arquivos com a ferramenta robocopy . E para diferenciar as versões, eu gostaria de definir o timestamp para "now" na pasta de saída quando o arquivo é copiado.

Basicamente, seria como copiar e "tocar" o arquivo.

No entanto, por mais fácil que pareça, parece que não há opção para fazer isso. Eu entendi que, ao usar o sinalizador D (dados) em / COPY , o sinalizador T (carimbo de data e hora) é adicionado automaticamente, para que o carimbo de data / hora da origem é mantido.

Existe algo que eu perdi nas opções? Ou existe alguma outra alternativa?

Obrigado por qualquer ajuda.

Julien.

    
por foch 09.12.2013 / 10:51

2 respostas

1

Eu não acho que o Robocopy funcione para isso. Uma parte essencial de como o Robocopy funciona é comparar registros de data e hora e tamanhos de arquivo nas pastas de origem e de destino para determinar quais arquivos precisam ser copiados. Portanto, você não pode usar o Robocopy para atualizar os timestamps no destino para serem "mais recentes" do que os timestamps no código-fonte.

Agora, tenho visto esse comportamento ao enviar arquivos com permissões do UNIX para NTFS (ou vice-versa), mas não é um comportamento intencional como a incapacidade do Robocopy de converter as ACLs.

Não estou bem claro sobre o que você está tentando fazer, mas provavelmente há algumas soluções para conseguir algo que funcione para você. Exemplos:

  • Faça com que o script robocopy copie os arquivos para um diretório nomeado com base na data.
  • Capture a hora / data em um arquivo de log sempre que o script for executado com êxito.
por 09.12.2013 / 17:13
1

Você teria que atualizar o (s) arquivo (s) depois que o robocopy estivesse concluído.

Você teria que usar algo como:

If you want to assign the current time and date to a file without modifying the file, use the following syntax:

copy /b filename.txt +,,

The commas indicate the omission of the Destination parameter.

Você precisa executar isso na pasta de destino, o que significa que você precisa estar nessa pasta em uma linha de comando para que ela funcione corretamente.

Você poderia escrever um arquivo em lote que executaria esse comando em determinados arquivos nessa pasta de destino.

Mas eu ainda não recebo o seu último comentário "Eu só preciso de novos arquivos para serem copiados." - isso é o que o robocopy faz e irá capturar o novo timestamp dos arquivos de origem novos / atualizados quando são copiados. Portanto, qualquer novo arquivo JAR na origem deve ter novos carimbos de data e hora na origem e no destino.

    
por 09.12.2013 / 18:05