Узнать вчерашнее число в Windows cmd

Командный файл Yesterday.bat

echo off
rem узнать вчерашнее число

setlocal enabledelayedexpansion

rem Работает при условии, что %date% распарсится в виде dd.mm.yyyy
rem Если распарсивается в другом виде, то надо поиграть с разбивкой даты на день, месяц, год
rem Разбивку вообще то можно сделать через for и указать разделитель, тогда можно
rem наплевать на количество цифр в дне/месяце
set dt=%date%

set /A d=%dt:~,2%-1

if !d!==0 (
rem Если надо получить последний день предыдущего месяца
  set /A m=%dt:~3,2%-1
  set y=%dt:~6%
  call :setlastm
) else (
rem Если мы в том же месяце остались после вычитания дня
  set /A m=%dt:~3,2%-0
  set y=%dt:~6%
)

rem Дописать ноль слева от числа
set /A x=d/10
if !x!==0 set d=0!d!

rem Дописать ноль слева от месяца
set /A x=m/10
if !x!==0 set m=0!m!

rem Выводим на экран полученную дату
set XDAY=%y%-%m%-%d%

echo вчера - %XDAY%
exit

rem Это типа процедура у нас тут
rem Если надо открутить месяц
:setlastm
if !m!==0 (
rem Если надо открутить год
  set m=12
  set /A y=y-1
)
rem теперь надо получить последний день месяца
if !m!==1 set d=31
if !m!==2 call :setfeb
if !m!==3 set d=31
if !m!==4 set d=30
if !m!==5 set d=31
if !m!==6 set d=30
if !m!==7 set d=31
if !m!==8 set d=31
if !m!==9 set d=30
if !m!==10 set d=31
if !m!==11 set d=30
if !m!==12 set d=31
rem Выход из "процедуры"
exit /b

rem Это типа еще одна процедура
rem С февралем траблы
:setfeb
rem найдем остаток от деления года на 4, чтобы определить високосность года
rem Не рассматриваем случай с високосностью, которая попадает на смену столетия (лениво)
set /A vy=y %% 4
if !vy!==0 (
  set d=29
) else (
  set d=28
)
rem Выход из "процедуры"
exit /b

 

Категория: статьи | Добавил: ae999 (13.12.2020)
Просмотров: 380