Gurevich.intercon.ru

Семейный сайт Гуревичей

Bat-ники: получение предыдущей даты

2010-05-13 от San

Bat-ники: получение предыдущей даты

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

[cc escaped=»true»]@echo off

set year=%date:~-4%
set month=%date:~3,2%
set day=%date:~0,2%

rem Remove zero before digit
if «%month:~0,1%.» == «0.» set month=%month:~-1%
if «%day:~0,1%.» == «0.» set day=%day:~-1%

rem Make yeserday date

if not «%day%» == «1» set /a day=%day%-1 & goto yesterdaydone.
if «%month%»== «1» set /a year=%year%-1 & set month=12 & set day=31 & goto yesterdaydone
if «%month%»== «2» set /a month=%month%-1 & set day=31 & goto yesterdaydone
if «%month%»== «3» set /a month=%month%-1 & set day=28 & goto checkvisokos
if «%month%»== «4» set /a month=%month%-1 & set day=31 & goto yesterdaydone
if «%month%»== «5» set /a month=%month%-1 & set day=30 & goto yesterdaydone
if «%month%»== «6» set /a month=%month%-1 & set day=31 & goto yesterdaydone
if «%month%»== «7» set /a month=%month%-1 & set day=30 & goto yesterdaydone
if «%month%»== «8» set /a month=%month%-1 & set day=31 & goto yesterdaydone
if «%month%»== «9» set /a month=%month%-1 & set day=31 & goto yesterdaydone
if «%month%»== «10» set /a month=%month%-1 & set day=30 & goto yesterdaydone
if «%month%»== «11» set /a month=%month%-1 & set day=31 & goto yesterdaydone
if «%month%»== «12» set /a month=%month%-1 & set day=30 & goto yesterdaydone

:checkvisokos
set /a checkleap=%year%%%4
if %checkleap%==0 set day=29

:yesterdaydone

rem Add zero before digit
if %month% LSS 10 set month=0%month%

if %day% LSS 10 set day=0%day%[/cc]

После отработки скрипта в переменных year,month и day будут находиться год, месяц и день предыдущей даты на момент выполнения скрипта.

Опубликовано Четверг, 13-05-2010 в 16:28 в рубрики Компьютеры и сети. Вы можете оставить отслеживать комментарии к записи при помощи RSS 2.0 ленты. Комментарии и пинг запрещены.

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

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.