Arquivo em lote para mover / comprimir / excluir arquivos

2

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

  1. Mova os arquivos com mais de dois dias para o diretório principal (Jason) para um diretório de arquivamento.
  2. Arquivos zip no diretório de arquivo com mais de 1 semana e excluir arquivos desse diretório com mais de 6 meses.
  3. Desejo executar esse script em um diretório diferente (não no diretório que possui os arquivos).

Eu escrevi o script a seguir, mas ele não está funcionando corretamente.

REM move files older than 2 days to an archive directory
robocopy D:\Agentrics\integration\incoming\Jason D:\Agentrics\integration\incoming\Jason\archive /MOV /MINAGE:2

Perguntas:

  1. Como posso alterar o comando abaixo para compactar arquivos com mais de uma semana?
  2. É possível que os arquivos compactados possam ter a mesma data e hora de criação dos arquivos originais?
REM zip all files in the backup directory
FOR %%A IN (*.TXT*, *.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%A"
FOR %%A IN (*.TXT,  *.cpi)  DO DEL "D:\Agentrics\integration\incoming\Jason\archive\.cpi*" "%%A"

REM Delete all files in the backup directory that are older than 6 months
forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /m *.* /d -500 /c "cmd /c del /q @path"
    
por Mansoor Ahmad 27.02.2013 / 19:49

1 resposta

0

Se eu fosse você, não usaria por ciclo para isso. Eu preferiria o caminho proposto por @harper Mas ainda assim, aqui está a maneira 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
    
por 10.12.2015 / 13:11