Как создать архив RAR с датой архивной папки в имени файла архива? - PullRequest
0 голосов
/ 19 мая 2018

Используемый мной облачный сервис 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 вместо текущей даты / времени?

1 Ответ

0 голосов
/ 20 мая 2018

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

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

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

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

  • echo /?
  • endlocal /?
  • for /?
  • rem /?
  • set /?
  • setlocal /?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...