Estoy intentando escribir un script por lotes que se ejecutará automáticamente todos los días para hacer lo siguiente:
- Mueva archivos de más de 2 días desde el directorio principal (Jason) a un directorio de archivo.
- Comprima los archivos en el directorio de archivo que tengan más de 1 semana y elimine los archivos de este directorio que tengan más de 6 meses.
- Quiero ejecutar este script desde un directorio diferente (no el directorio que tiene los archivos).
Escribí el siguiente script pero no funciona correctamente.
REM mueve archivos de más de 2 días a un directorio de archivo robocopy D:\Agentrics\integration\incoming\Jason D:\Agentrics\integration\incoming\Jason\archive /MOV /MINAGE:2
Preguntas:
- ¿Cómo puedo cambiar el siguiente comando para comprimir archivos de más de 1 semana?
- ¿Es posible que los archivos comprimidos tengan la misma fecha y hora de creación que los archivos originales?
REM comprime todos los archivos en el directorio de respaldo PARA %%A EN (*.TXT*, *.cpi*) DO "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%A" PARA %%A EN (*.TXT, *.cpi) DO DEL "D:\Agentrics\integration\incoming\Jason\archive\.cpi*" "%%A" REM Eliminar todos los archivos en el directorio de respaldo que tengan más de 6 meses forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /m *.* /d -500 /c "cmd /c del /q @path"
Respuesta1
Si yo fuera tú, no usaría la bicicleta para esto. Preferiría la forma propuesta por @harper. Pero aún así, así es como lo querías:
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