суббота, 15 ноября 2014 г.

Помещение текущей даты в переменную в .bat-файле.

Недавно столкнулся с задачей, требующей ежедневного архивирования содержимого папки в архив вида "название файлаDD_MM_YYYY". Чтобы это сделать в одном батнике надо выполнить несколько действий:


1. Понять как выводится дата в вашей локали. Для этого запускаем CMD и пишем DATE/T. Русская локаль -самая простая, в ней текущая дата выводится в виде 15.11.2014. В Английской, например, все несколько сложнее, там перед датой идет сокращенное название дня недели, например Sat 15.11.2014. На на данном этапе интересует та часть строки, которая содержит дату. Чтобы получить ее, на нужна сделать так:

for /f %%i in ('DATE/T') do set date=%%i 

или, если перед датой что-то находится, например Sat

for /f "tokens=2" %%i in ('DATE/T') do set date=%%i

2. Теперь нам нужно заменить точки или слеши в дате на подчеркивание.

Это делается с помощью вот такой команды (пример для замены ./ на _)

set date=%date:/=_%

В общем-то и все. Последний шаг самый простой. Запускаем архивацию:

"C:\Program Files\7-Zip\7z" a -r C:\backup\docs%date%.zip C:\folder_to_backup

Таким образом, полный скрипт архивации для локали English (United States) будет выглядеть вот так:

for /f "tokens=2" %%i in ('DATE/T') do set date=%%i
set date=%date:/=_%
"C:\Program Files\7-Zip\7z" a -r C:\backup\docs%date%.zip C:\folder_to_backup

Надеюсь, кому-нибудь это решения сэкономит пару-тройку часов поисков ;)


Комментариев нет:

Отправить комментарий