Пакетный файл для перемещения / сжатия / удаления файлов
Я пытаюсь написать пакетный скрипт, который будет запускаться автоматически ежедневно для выполнения следующих действий:
- Переместите файлы старше 2 дней из главного каталога (Jason) в архивный каталог.
- Архивируйте файлы в каталоге архива старше 1 недели и удаляйте файлы из этого каталога старше 6 месяцев.
- Я хочу запустить этот скрипт из другого каталога (не из каталога, в котором находятся файлы).
Я написал следующий скрипт, но он работает неправильно.
REM переместить файлы старше 2 дней в каталог архива robocopy D:\Agentrics\ интеграция \ входящий \Jason D:\Agentrics\ интеграция \ входящий \Jason\ архив /MOV /MINAGE:2
Вопросы:
- Как изменить указанную ниже команду на zip-файлы старше 1 недели?
- Возможно ли, что заархивированные файлы могут иметь ту же дату и время создания, что и исходные файлы?
REM ZIP все файлы в каталоге резервного копирования ДЛЯ %%A IN (*.TXT*, *.cpi*) ДЕЙСТВУЙТЕ "C:\Program Files\WinRAR\WinRAR.exe" a -r "%%~nA.zip" "%%A" FOR %%A IN (*.TXT, *.cpi) DO DEL "D:\Agentrics\ интеграция \ входящий \Jason\ archive \.cpi *" "%% A" REM Удалить все файлы в каталоге резервных копий, которые старше 6 месяцев forfiles /p D:\Agentrics\ интеграция \ входящий \Jason\ архив /s /m *.* /d -500 /c "cmd /c del /q @path"
1 ответ
На вашем месте я бы не использовал для этого цикл. Я бы предпочел способ, предложенный @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