Как создать архив RAR с датой архивной папки в имени файла архива?

Используемый мной облачный сервис Dropbox не сохраняет первоначальную отметку времени загруженных папок. Я должен использовать WinRAR для сжатия папки для резервного копирования в облаке, чтобы сохранить дату / время исходной папки перед тем, как загрузить ее в Dropbox. Но я не смог найти простой способ создать имя файла архива с текущей датой последнего изменения папки в формате YYYYMMDD в имени файла архива.

Командная строка

for %I in ("d:\doc\aatmp") do @echo %~tI

Выполняемые в командной строке окна выводят:

2014-06-01 22:12

Таким образом, формат даты FOR зависит от региона YYYY-MM-DD hh:mm,

В настоящее время используется командная строка для создания архива RAR:

winrar a -r -agYYYYMMDD-HHMM kk "d:\doc\aatmp\"

Справка: Как создать архив RAR с текущей датой в имени файла архива?

Как узнать дату архивной папки d:\doc\aatmp в имя файла архива kk.rar вместо текущей даты / времени?

2 ответа

Решение

Эту задачу можно выполнить на компьютере Windows с настройками региона с помощью командного файла со следующими командными строками:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
set "FolderToBackup=D:\doc\aatmp"

rem Get last modification date/time of the folder to backup
rem in region dependent format which is YYYY-MM-DD hh:mm.
for %%I in ("%FolderToBackup%") do set "FolderTimeStamp=%%~tI"

rem Get from this date/time string just the year, month
rem and day of month from the date without the hyphens.
set "FolderTimeStamp=%FolderTimeStamp:~0,4%%FolderTimeStamp:~5,2%%FolderTimeStamp:~8,2%"

rem Compress the folder to backup into a RAR archive file with
rem last modification date of folder used in archive file name.
"%ProgramFiles%\WinRAR\WinRAR.exe" a -ac -cfg- -dh -ep1 -ibck -m4 -oh -ol -os -ow -r -ts -y -- kk_%FolderTimeStamp%.rar "%FolderToBackup%"

rem Restore the environment as set before usage of command SETLOCAL at top.
endlocal

Строка, присвоенная переменной среды FolderTimeStamp это например:

2014-06-01 22:12

Эта строка должна быть изменена так:

20140601

Это делается с помощью подстановки строк, как объяснено с помощью команды SET, выводимой при запуске в окне командной строки. set /? а также ответом на вопрос Что означает%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2% значит?

Подсчет индекса начинается с 0. Первое число после :~ всегда является индексом символа (слева на положительном или справа на отрицательном), а второе число здесь всегда число символов.

Первый символ года по индексу 0 и год имеет четыре символа. По этой причине первая подстановка строки :~0,4 чтобы получить символы из индекса 0 индексировать 3,

Дефис в символьном указателе 4 не должно быть в имени файла и по этой причине игнорируется.

Следующие два символа в строке метки времени папки - это месяц в символьных индексах 5 а также 6 что является причиной использования :~5,2,

Дефис в символьном указателе 7 снова игнорируется, поскольку не требуется для имени файла.

Следующие два символа в строке метки времени папки - это день месяца в символьных индексах 8 а также 9 что является причиной использования :~8,2,

Последние шесть символов, начиная с индекса 10 не представляют интереса для имени файла. Поэтому эти шесть символов тоже игнорируются.

WinRAR выполняется после определения даты последнего изменения папки для резервного копирования и переформатирования отметки времени, подходящей для имени файла архива, для создания архива RAR с этой строкой в ​​имени файла архива со следующими дополнительными параметрами, указанными с помощью переключателей:

  • -ac... очистить атрибут архива после сжатия, чтобы узнать, какие файлы включены в последний архив, а какие изменены с момента последнего резервного копирования.
  • -cfg-... игнорировать профиль по умолчанию и переменную среды.
  • -dh... открыть общие файлы.
  • -ep1... исключить базовую папку из имен, что означает D:\doc не входит в архив, но папка aatmp со всеми его атрибутами, отметками времени и разрешениями включается в архив. Смотрите ответ на Просто сжать 1 папку в пакете с командной строкой WinRAR? подробности о различиях при указании в командной строке "%FolderToBackup%" без обратной косой черты в конце или "%FolderToBackup\" с обратной косой чертой в конце.
  • -ibck... запустить WinRAR в фоновом режиме, что означает сворачивание в системный трей.
  • -m4... используйте хорошее сжатие.
  • -oh... сохранить жесткие ссылки в виде ссылки вместо файла.
  • -ol... сохранить символические ссылки в виде ссылки вместо файла.
  • -os... сохранить потоки NTFS.
  • -ow... обрабатывать информацию о безопасности файлов.
  • -r... рекурсивно добавлять все подпапки и файлы.
  • -ts... сохранить все времена файла (модификация, создание, доступ).
  • -y... примите да на все запросы.
  • --... больше нет переключателя.

Запустите WinRAR, щелкните в последнем главном меню Справка по первому пункту меню Разделы справки, перейдите на вкладку Содержание в элементе списка Режим командной строки, нажмите на элемент списка Переключатели и прочитайте соответствующую страницу справки для используемых переключателей для получения подробной информации.

Созданный архив RAR является реальной резервной копией, поскольку он включает в себя не только файлы и подпапки с их датами последнего изменения и атрибутами, но также с датами создания и последнего доступа, альтернативными потоками данных в случае, если любой файл имеет одну, жесткие и символические ссылки, и разрешения безопасности NTFS, чтобы иметь возможность действительно восстановить все при извлечении архива RAR с соответствующими коммутаторами и с использованием учетной записи, которая поддерживает восстановление даже разрешений безопасности NTFS.

Для понимания других используемых команд, которые подробно не описаны выше, и того, как они работают, откройте окно командной строки, выполните там следующие команды и полностью прочитайте все страницы справки, отображаемые для каждой команды.

  • echo /?
  • endlocal /?
  • for /?
  • rem /?
  • set /?
  • setlocal /?

Попробуй это:

      rar.exe a -ag+YYYYMMDD_HHMM -cfg- -ep1 -inul -m5 -r -y "D:\Backup\source.rar" "D:\Backup\destination"
Другие вопросы по тегам