Архивировать папку с проектом очень удобно и полезно. Для себя я давно выбрал следующий формат имен архивов: имя проекта + дата и время с точностью до секунды, например:
easy-coding-2009.07.06-10.27.12.rar
Долгое время я использовал вот такой скрипт backup.cmd
:
rem Берем имя родительского каталога без полного пути. for %%I in (.) do set CWD=%%~nI rem Архивируем. winrar a -v -r -s -ag-YYYY.MM.DD-HH.MM.SS -x*.rar -x*.7z %CWD%
Просто бросаешь какой скрипт в каталог любого проекта (имя каталога должно быть сообразно проекту) и все, можно архивировать. Скрипт берет имя каталога как базу и добавляет к ней дату и время с помощью удобной опции архиватора RAR.
Последнее время я все чаще использую 7z как основной архиватор, но у него я не нашел схожего ключа на добавление в имя архива даты и времени. Пришлось слегка извратиться.
В этоге родился скрипт backup-7z.cmd
:
@echo off setlocal set line=%DATE% rem Проходимся по строке вида DD/MM/YYYY и rem превращаем ее в YYYY.MM.DD. :parse_date for /F "delims=/ tokens=1,*" %%a in ("%line%") do ( set line=%%b set now=%%a.%now% ) if "%line%" neq "" goto parse_date rem Отрезаем хвостовую точку от даты. set now=%now:~0,10% rem Добавляем время. Оно уже в формате HH:MM:SS.ms. Отрезаем доли секунды. set now=%now%-%TIME:~0,8% rem Заменяем двоеточие на точку set now=%now::=.% rem Берем имя родительского каталога без полного пути. for %%I in (.) do set CWD=%%~nI rem Архивируем. 7z a -mx9 -r -x!*.rar -x!*.7z %CWD%-%now%.7z endlocal
Это скрипт делает все как и раньше, но только для 7z.
Конечно, под UNIX’ом есть море путей сделать подобное, да и в Windows можно Cygwin использовать, но я всегда сначала пытаюсь сделать native решение, если это возможно.