Check file date and time and keep the most current in Batch

Asked

Viewed 5,038 times

1

I need a program in Batch where I will specify two files, it will compare the date and time of their creation and if the first is more current it would delete the second and copy the first, otherwise it will do nothing.

  • When you say "batch", it refers to a program that can be scheduled written in any language or a program using Spring Batch?

  • Hello @Giulianabezerra I need that program to be in . bat (batch files) or in VBA, I will schedule this program in the Windows Task Scheduler to run every 30min, checking if someone has made new updates in the company program, this check will be done by comparing the date and time of file modification, if I have any changes it will delete the old file and copy the new file.

  • The file is very large? Because I don’t see the need for comparison, overwrite it is ready, rsrs

  • @Alexandreueda, will these files be in one folder? You can use this answer I put, I will add a command to copy the contents of a folder if the file is newer.

1 answer

1


This command does not delete, but only copies and overwrites if the source file is newer than the target file.

You must put the complete path of the files to work properly.

The copy causes the destination file to be overwritten by the source file, if the file name is different and the source file is newer, the copy will be made, but the name will continue that of the destination file.

@echo off

set /p file1=Digite o caminho e nome do arquivo 1: 

set /p file2=Digite o caminho e nome do arquivo 2: 

xcopy "%file1%" "%file2%" /y /d

pause

If you want to copy only the most recent files from a given folder just do as below:

xcopy "C:\PastaOrigem\." "C:\PastaDestino" /y /d

Learn more about xcopy:

Copia arquivos e árvores de diretórios.

XCOPY origem [destino] [/A | /M] [/D[:data]] [/P] [/S [/E]] [/V] [/W]
                           [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                           [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B] [/J]
                          [/EXCLUDE:arquivo1[+arquivo2][+arquivo3]...]

  origem       Especifica o(s) arquivo(s) a ser(em) copiado(s).
  destino  Especifica o local e/ou o nome dos novos arquivos.
  /A           Copia somente arquivos com o atributo de arquivamento
               definido; nao altera o atributo.
  /M           Copia somente arquivos com o atributo de arquivamento
               definido; desativa o atributo de arquivamento.
  /D:m-d-a     Copia os arquivos alterados durante ou após a data
               especificada. Se nao for definida uma data, copia apenas os
               arquivos cujo tempo de origem seja mais novo do que o tempo
               de destino.
  /EXCLUDE:arquivo1[+arquivo2][+arquivo3]...
               Especifica uma lista de arquivos contendo cadeias de
               caracteres. Cada cadeia deve estar em uma linha separada nos
               arquivos. Quando qualquer cadeia corresponder a qualquer parte
               do caminho absoluto do arquivo a ser copiado, esse arquivo
               deixará de ser copiado. Por exemplo, especificar uma cadeia de
               caracteres como \obj\ ou .obj excluirá todos os arquivos sob o
               diretório obj ou com a extensao .obj, respectivamente.
  /P           Solicita confirmaçao antes de criar cada arquivo de destino.
  /S           Copia diretórios e subdiretórios, exceto os vazios.
  /E           Copia diretórios e subdiretórios, inclusive os vazios.
               O mesmo que /S /E. Pode ser usado para modificar /T.
  /V           Verifica o tamanho de cada novo arquivo.
  /W           Solicita que você pressione uma tecla antes de copiar.
  /C           Continua copiando, mesmo que ocorram erros.
  /I           Se o destino nao existir e mais de um arquivo estiver sendo
               copiado, pressupoe que o destino deve ser um diretório.
  /Q           Nao exibe os nomes de arquivos ao copiar.
  /F           Exibe os nomes de arquivos de origem e de destino completos ao
               copiar.
  /L           Exibe arquivos que seriam copiados.
  /G           Permite a cópia de arquivos criptografados para um destino que
               nao oferece suporte a criptografia.
  /H           Copia arquivos ocultos e do sistema também.
  /R           Substitui arquivos somente leitura.
  /T           Cria a estrutura de diretórios, mas nao copia arquivos. Nao
               inclui diretórios ou subdiretórios vazios. /T /E inclui
               diretórios e subdiretórios vazios.
  /U           Copia apenas os arquivos que já existem no destino.
  /K           Copia atributos. O Xcopy normal redefinirá os atributos
               somente leitura.
  /N           Copia usando os nomes curtos gerados.
  /O           Copia as informaçoes de ACL e proprietário do arquivo.
  /X           Copia configuraçoes de auditoria de arquivo (implica /O).
  /Y           Suprime o prompt para você confirmar se deseja substituir
               um arquivo de destino existente.
  /-Y          Exibe o prompt para você confirmar se deseja substituir
               um arquivo de destino existente.
  /Z           Copia arquivos de rede no modo reiniciável.
  /B           Copia o próprio Vínculo Simbólico, e nao o destino do vínculo.
  /J           Copia usando E/S sem buffer. Recomendável para arquivos muito
               grandes.

A opçao /Y pode ser predefinida na variável de ambiente COPYCMD.
Isso pode ser anulado por /-Y na linha de comando.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.