Arquivo em lote para mover/compactar/excluir arquivos

Arquivo em lote para mover/compactar/excluir arquivos

Estou tentando escrever um script em lote que será executado automaticamente diariamente para fazer o seguinte:

  1. Mova os arquivos com mais de 2 dias do diretório principal (Jason) para um diretório de arquivo.
  2. Compacte os arquivos no diretório de arquivamento com mais de 1 semana e exclua os arquivos desse diretório com mais de 6 meses.
  3. Quero executar este script em um diretório diferente (não no diretório que contém os arquivos).

Eu escrevi o seguinte script, mas não está funcionando corretamente.

REM move arquivos com mais de 2 dias para um diretório de arquivo
robocopy D:\Agentrics\integration\incoming\Jason D:\Agentrics\integration\incoming\Jason\archive /MOV /MINAGE:2

Questões:

  1. Como posso alterar o comando abaixo para compactar arquivos com mais de 1 semana?
  2. É possível que os arquivos compactados tenham a mesma data e hora de criação dos arquivos originais?
REM compacta todos os arquivos no diretório de backup
FOR %%A IN (*.TXT*, *.cpi*) FAÇA "C:\Arquivos de Programas\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%A"
FOR %%A IN (*.TXT, *.cpi) DO DEL "D:\Agentrics\integration\incoming\Jason\archive\.cpi*" "%%A"

REM Exclua todos os arquivos no diretório de backup com mais de 6 meses
forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /m *.* /d -500 /c "cmd /c del /q @caminho"

Responder1

Se eu fosse você, não usaria ciclo para isso. Eu preferiria o caminho proposto por @harper Mas ainda assim, aqui está o jeito que você queria:

REM move files older than 2 days to an archive directory
forfiles /P D:\Agentrics\integration\incoming\Jason /M *.txt /S /D -2 /C "cmd /c move @file D:\Agentrics\integration\incoming\Jason\archive"
forfiles /P D:\Agentrics\integration\incoming\Jason /M *.cpi /S /D -2 /C "cmd /c move @file D:\Agentrics\integration\incoming\Jason\archive"
REM zip all files in the backup directory
for /f "tokens=*" %%a in ('forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /d -7') do "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%a"
REM Delete all files in the backup directory that are older than 6 months
for /f "tokens=*" %%a in ('forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /d -183') do del D:\Agentrics\integration\incoming\Jason\archive\%%a /y

informação relacionada