Estou tentando escrever um script em lote que será executado automaticamente diariamente para fazer o seguinte:
- Mova os arquivos com mais de 2 dias do diretório principal (Jason) para um diretório de arquivo.
- 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.
- 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:
- Como posso alterar o comando abaixo para compactar arquivos com mais de 1 semana?
- É 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