Пакетный файл для перемещения/сжатия/удаления файлов

Пакетный файл для перемещения/сжатия/удаления файлов

Я пытаюсь написать пакетный скрипт, который будет автоматически запускаться ежедневно и выполнять следующие действия:

  1. Переместите файлы старше 2 дней из основного каталога (Jason) в архивный каталог.
  2. Заархивируйте файлы в архивном каталоге, которые старше 1 недели, и удалите из этого каталога файлы, которые старше 6 месяцев.
  3. Я хочу запустить этот скрипт из другого каталога (не из каталога, в котором находятся файлы).

Я написал следующий скрипт, но он работает неправильно.

REM переместить файлы старше 2 дней в архивный каталог
robocopy D:\Agentrics\integration\incoming\Jason D:\Agentrics\integration\incoming\Jason\archive /MOV /MINAGE:2

Вопросы:

  1. Как изменить команду ниже, чтобы архивировать файлы старше 1 недели?
  2. Возможно ли, что заархивированные файлы могут иметь ту же дату и время создания, что и исходные файлы?
REM zip все файлы в резервной папке
ДЛЯ %%A В (*.TXT*, *.cpi*) ДО "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%A"
ДЛЯ %%A В (*.TXT, *.cpi) ДО УДЕЛ "D:\Agentrics\integration\incoming\Jason\archive\.cpi*" "%%A"

REM Удалить все файлы в резервной папке, которые старше 6 месяцев.
forfiles /p D:\Agentrics\integration\incoming\Jason\archive /s /m *.* /d -500 /c "cmd /c del /q @path"

решение1

Если бы я был тобой, я бы не использовал for cycle для этого. Я бы предпочел способ, предложенный @harper Но все же, вот способ, который ты хотел:

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

Связанный контент