Archivo por lotes para mover/comprimir/eliminar archivos

Archivo por lotes para mover/comprimir/eliminar archivos

Estoy intentando escribir un script por lotes que se ejecutará automáticamente todos los días para hacer lo siguiente:

  1. Mueva archivos de más de 2 días desde el directorio principal (Jason) a un directorio de archivo.
  2. 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.
  3. 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:

  1. ¿Cómo puedo cambiar el siguiente comando para comprimir archivos de más de 1 semana?
  2. ¿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

información relacionada