Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Батник формирующий дату вчера-сегодня-завтра для применения в командах

Ответить
Настройки темы
CMD/BAT - [решено] Батник формирующий дату вчера-сегодня-завтра для применения в командах

Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Всем привет. Помогите дописать код даты завтрашнего дня в следующем батнике:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion 
set d=%date:~0,2%
set m=%date:~3,2%
set y=%date:~6,4%
 
if %d:~0,1%==0 set d=%d:~1%
if %m:~0,1%==0 set m=%m:~1%
 
set /a feb=y%%4
if %feb%==0 (set feb=29) else (set feb=28)
 
set /a tok=m-1
if %tok%==0 set tok=12
for /f "tokens=%tok%" %%i in ("31 %feb% 31 30 31 30 31 31 30 31 30 31") do (
   set /a d-=1
    if !d!==0 (
        set d=%%i
        set m=%tok%
        if !m!==12 set /a y-=1
    )
)
 
set d=0%d%
set m=0%m%
set yesterday=%d:~-2%.%m:~-2%.%y%
set today=%date:~0,2%.%date:~3,2%.%date:~6,4%
set tomorrow= rem код даты завтрашнего дня? 

echo Вчера - %yesterday%
echo Сегодня - %today%
echo Завтра - %tomorrow%

md "D:\%y%\%m%\%d%\"
md "D:\%date:~6,4%\%date:~3,2%\%date:~0,2%\"
md "D:\%tomorrow%\"  rem код для создания папки с датой завтрашнего дня???

pause

Отправлено: 13:07, 11-01-2018

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Sergey.l,
вам в прошлой вашей теме DJ Mogarych привел хороший пример для вчерашней, для завтрашней ничуть не сложнее (PowerShell):
Код: Выделить весь код
mkdir (get-date).AddDays(1).ToString("dd.MM.yyy")
а если бы вы еще озвучили свою задачу (а если допустимо то и задумку) целиком, то может все по-другому и проще бы сделали.

Отправлено: 13:50, 11-01-2018 | #2



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

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Какое расширение у файла должно быть. Можете вместе с коммандами написать, которые указал выше. Мне нужно по маске с датой создавать папки, перемещать файлы (если в имени есть дата), копировать с добавлением даты в имя файла.
Например, создать папки в формате гггг/мм/дд
Переместить файл ддмм_имя.doc
Скопировать файл имя.doc в папку с добавлением даты ддмм_имя.doc
А если не сложно, то помогите ДОПИСАТЬ в батник код завтрашней даты.
В первом сообщении я все указал...
Цитата alpap:
Sergey.l,
вам в прошлой вашей теме DJ Mogarych привел хороший пример для вчерашней, для завтрашней ничуть не сложнее (PowerShell):
Код: Выделить весь код
mkdir (get-date).AddDays(1).ToString("dd.MM.yyy")
а если бы вы еще озвучили свою задачу (а если допустимо то и задумку) целиком, то может все по-другому и проще бы сделали.

Последний раз редактировалось Sergey.l, 11-01-2018 в 14:51.


Отправлено: 14:27, 11-01-2018 | #3


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Sergey.l, У меня ощущение, что моё решение Вы сочли бесполезным и не вчитывались.
Однако! Там приведена подпрограмма, которая пересчитывает даты на произвольное число дней как вперёд, так и назад.
Код: Выделить весь код
@Echo Off
cls

SetLocal EnableDelayedExpansion

Call :StrDate "yyyy" "mm" "dd" "hhmm"

Set /A DeltaDay=0
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyy" "mm" "dd"
Echo %yyyy% %mm% %dd% Сегодня

Set /A DeltaDay=-1
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyy" "mm" "dd"
Echo %yyyy% %mm% %dd% Вчера

Set /A DeltaDay=1
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyy" "mm" "dd"
Echo %yyyy% %mm% %dd% Завтра

Set /A DeltaDay=7
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyy" "mm" "dd"
Echo %yyyy% %mm% %dd% Через неделю

Set /A DeltaDay=-61
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyy" "mm" "dd"
Echo %yyyy% %mm% %dd% Два месяца тому назад

pause
GoTo :Eof

:StrDate
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@Tdate=%%d"
	Set "%~1=%@Tdate:~0,4%"
	Set "%~2=%@Tdate:~4,2%"
	Set "%~3=%@Tdate:~6,2%"
	Set "%~4=%@Tdate:~8,4%"
GoTo :Eof

:FromNow

rem Пересчет даты на заданное кол-во дней
rem Формат даты dd.mm.yyyy +- дни получим новые yyyymmdd

rem Заимствовано http://forum.oszone.net/thread-186889.html
rem вызов Call :FromNow %DeltaDay% %Date% "yyyy" "mm" "dd"
rem результат в перемменной %yyyy% %mm% %dd%

 SetLocal
 Set DT=%2
 Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100
 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4
 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001
 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11
 Set /A J=J+2-12*L,I=100*(N-49)+I+L
 Set /A yyyy=I,mm=100+J,dd=100+K
 EndLocal &(Set %~3=%yyyy%&Set %~4=%mm:~-2%&Set %~5=%dd:~-2%)
GoTo :Eof
Оно может показаться длинноватым, но зато отлажено и не надо морщить лоб при написании скрипта с похожим пересчетом.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:47, 11-01-2018 | #4


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Подскажите, а как мне разделить dd mm yyyy для разных команд в одном файле, если эти обозначения одинаковы для вчера, сегодня и завтра.
Цитата megaloman:
Sergey.l, У меня ощущение, что моё решение Вы сочли бесполезным и не вчитывались.
Однако! Там приведена подпрограмма, которая пересчитывает даты на произвольное число дней как вперёд, так и назад.
Код: Выделить весь код
@Echo Off
cls

SetLocal EnableDelayedExpansion

Call :StrDate "yyyy" "mm" "dd" "hhmm"

Set /A DeltaDay=0
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyy" "mm" "dd"
Echo %yyyy% %mm% %dd% Сегодня

Set /A DeltaDay=-1
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyy" "mm" "dd"
Echo %yyyy% %mm% %dd% Вчера

Set /A DeltaDay=1
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyy" "mm" "dd"
Echo %yyyy% %mm% %dd% Завтра

Set /A DeltaDay=7
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyy" "mm" "dd"
Echo %yyyy% %mm% %dd% Через неделю

Set /A DeltaDay=-61
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyy" "mm" "dd"
Echo %yyyy% %mm% %dd% Два месяца тому назад

pause
GoTo :Eof

:StrDate
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@Tdate=%%d"
	Set "%~1=%@Tdate:~0,4%"
	Set "%~2=%@Tdate:~4,2%"
	Set "%~3=%@Tdate:~6,2%"
	Set "%~4=%@Tdate:~8,4%"
GoTo :Eof

:FromNow

rem Пересчет даты на заданное кол-во дней
rem Формат даты dd.mm.yyyy +- дни получим новые yyyymmdd

rem Заимствовано http://forum.oszone.net/thread-186889.html
rem вызов Call :FromNow %DeltaDay% %Date% "yyyy" "mm" "dd"
rem результат в перемменной %yyyy% %mm% %dd%

 SetLocal
 Set DT=%2
 Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100
 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4
 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001
 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11
 Set /A J=J+2-12*L,I=100*(N-49)+I+L
 Set /A yyyy=I,mm=100+J,dd=100+K
 EndLocal &(Set %~3=%yyyy%&Set %~4=%mm:~-2%&Set %~5=%dd:~-2%)
GoTo :Eof
Оно может показаться длинноватым, но зато отлажено и не надо морщить лоб при написании скрипта с похожим пересчетом.

Отправлено: 17:45, 11-01-2018 | #5


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Sergey.l,
Цитата Sergey.l:
как мне разделить dd mm yyyy для разных команд в одном файле, если эти обозначения одинаковы для вчера, сегодня и завтра. »
Не делать одинаковые обозначения. Например:
Код: Выделить весь код
@Echo Off
cls

SetLocal EnableDelayedExpansion

Call :StrDate "yyyy" "mm" "dd" "hhmm"

Set /A DeltaDay=0
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyyN" "mmN" "ddN"

Set /A DeltaDay=-1
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyyY" "mmY" "ddY"

Set /A DeltaDay=1
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyyT" "mmT" "ddT"

Set /A DeltaDay=7
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyyW" "mmW" "ddW"

Set /A DeltaDay=-61
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyyM" "mmM" "ddM"

Echo %yyyyN% %mmN% %ddN% Сегодня
Echo %yyyyY% %mmY% %ddY% Вчера
Echo %yyyyT% %mmT% %ddT% Завтра
Echo %yyyyW% %mmW% %ddW% Через неделю
Echo %yyyyM% %mmM% %ddM% Два месяца (61 день) тому назад

pause
GoTo :Eof
Далее по тексту ...

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 11-01-2018 в 20:57.


Отправлено: 20:50, 11-01-2018 | #6


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я извиняюсь, за свою некомпетентность, но можно вас попросить. Прислать полный код например с такими командами (я не пойму где их указать в вашем коде)

Это будет в батнике УТРО (пример)
md d:\год\месяц\сегодня\
md d:\год\месяц\завтра\
сopy d:\шаблон.doc d:\год\месяц\сегодня\сегоднямесяц_шаблон.doc

Это будет в батнике КОНЕЦ СМЕНЫ (пример)
move d:\год\месяц\вчера\вчерамесяц_шаблон.doc d:\архив\год\месяц\вчера\

Я заметил по предыдущим темам, что вы не понимаете, зачем мне вчера-сегодня-завтра в одном батнике. Они в разных, но в некоторых есть по две даты. К содалению такой принцип работы.
Чтобы вы поняли суть этой неразберихи, объясню принцип своей работы.
Я прихожу на дежурство(смену) и запускаю например батник УТРО, при помощи него создаются рабочие папки, копируются шаблоны с добавлением текущей даты в формате ддмм_шаблон в нужные мне рабочие папки и т.д.
В течении суток я работаю с файлами в папках, некоторые создаю макросами в эксель и ворд. Новые файлы также содержат дату.
В конце смены, т.е. на следующий день, росле того как все распечатаю руководству, а у меня его много, я батником КОНЕЦ СМЕНЫ перемещаю файлы в папки с архивами, т.е. по маске даты "вчерашний день" команды находят файлы и переносят в папки-архив. И затем передаю дежурство другой смене и так 1/2
Папка с затрашним днем нужна для перемещения некоторых файлов для новой заступающей дежурной смены.

1. Могу я использовать в командах формат dd, т.е. переменные dd mm yyyy отдельно или только в формате dd.mm.yyyy, как у вас написано в коде? Т.к. иногда надо найти и переместить файл формата ddmm.doc
2. Куда именно вставлять команды в вашем коде? Пожалуйста, напишите код, если не сложно, с моими примерами команд указанными выше.

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

Цитата megaloman:
Sergey.l,
Цитата Sergey.l:
как мне разделить dd mm yyyy для разных команд в одном файле, если эти обозначения одинаковы для вчера, сегодня и завтра. »
Не делать одинаковые обозначения. Например:
Код: Выделить весь код
@Echo Off
cls

SetLocal EnableDelayedExpansion

Call :StrDate "yyyy" "mm" "dd" "hhmm"

Set /A DeltaDay=0
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyyN" "mmN" "ddN"

Set /A DeltaDay=-1
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyyY" "mmY" "ddY"

Set /A DeltaDay=1
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyyT" "mmT" "ddT"

Set /A DeltaDay=7
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyyW" "mmW" "ddW"

Set /A DeltaDay=-61
Call :FromNow %DeltaDay% %dd%.%mm%.%yyyy% "yyyyM" "mmM" "ddM"

Echo %yyyyN% %mmN% %ddN% Сегодня
Echo %yyyyY% %mmY% %ddY% Вчера
Echo %yyyyT% %mmT% %ddT% Завтра
Echo %yyyyW% %mmW% %ddW% Через неделю
Echo %yyyyM% %mmM% %ddM% Два месяца (61 день) тому назад

pause
GoTo :Eof
Далее по тексту ...

Последний раз редактировалось Sergey.l, 11-01-2018 в 21:54.


Отправлено: 21:36, 11-01-2018 | #7


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Sergey.l,
например с такими командами
Код: Выделить весь код
@Echo Off
cls

SetLocal EnableDelayedExpansion

CHOICE /C 123 /M "1 - Утро, 2 - Конец смены, 3 - Выйти"

If %ErrorLevel%==3 GoTo :Eof
If %ErrorLevel%==1 Call :Morning
If %ErrorLevel%==2 Call :EndDuty

pause
GoTo :Eof

:Morning
	Call :StrDate "yyyy" "mm" "dd" "hhmm"
	Call :FromNow 1 %dd%.%mm%.%yyyy% "yyyyT" "mmT" "ddT"

	2>nul md "d:\%yyyy%\%mm%\%dd%" 
	2>nul md "d:\%yyyyT%\%mmT%\%ddT%"
	Copy "d:\шаблон.doc" "d:\%yyyy%\%mm%\%dd%\%mm%_шаблон.doc"
GoTo :Eof

:EndDuty
	Call :StrDate "yyyy" "mm" "dd" "hhmm"
	Call :FromNow -1 %dd%.%mm%.%yyyy% "yyyyY" "mmY" "ddY"

	2>nul Md "d:\архив\%yyyyY%\%mmY%\%ddY%"
	move /Y "d:\%yyyyY%\%mmY%\%ddY%\%mmY%_шаблон.doc" "d:\архив\%yyyyY%\%mmY%\%ddY%\"
GoTo :Eof

:StrDate
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@Tdate=%%d"
	Set "%~1=%@Tdate:~0,4%"
	Set "%~2=%@Tdate:~4,2%"
	Set "%~3=%@Tdate:~6,2%"
	Set "%~4=%@Tdate:~8,4%"
GoTo :Eof

:FromNow

rem Пересчет даты на заданное кол-во дней
rem Формат даты dd.mm.yyyy +- дни получим новые yyyymmdd

rem Заимствовано http://forum.oszone.net/thread-186889.html
rem вызов Call :FromNow %DeltaDay% %Date% "yyyy" "mm" "dd"
rem результат в перемменной %yyyy% %mm% %dd%

 SetLocal
 Set DT=%2
 Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100
 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4
 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001
 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11
 Set /A J=J+2-12*L,I=100*(N-49)+I+L
 Set /A yyyy=I,mm=100+J,dd=100+K
 EndLocal &(Set %~3=%yyyy%&Set %~4=%mm:~-2%&Set %~5=%dd:~-2%)
GoTo :Eof
%yyyy% %mm% %dd% Это Год Месяц День сегодня
%yyyyY% %mmY% %ddY% Это Год Месяц День вчера
%yyyyT% %mmT% %ddT% Это Год Месяц День завтра
Вы получили переменные Год Месяц День, используйте их так, как Вам нужно в любой комбинации.

Например, если сегодня 11 января 2018года, то:
%yyyy%-%mm%-%dd% даст значение 2018-01-11
%dd%.%mm%.%yyyy% даст значение 11.01.2018

При вызове подпрограммы Call :StrDate "yyyy" "mm" "dd" "hhmm"
получим сегодняшние %yyyy% %mm% %dd%
Переменные можно обозвать и иначе, лишь бы было соответствие "yyyy" "mm" "dd" --> %yyyy% %mm% %dd%

Call :FromNow 1 %dd%.%mm%.%yyyy% "yyyyT" "mmT" "ddT"

По сегодняшней дате %dd%.%mm%.%yyyy% (то есть 11.01.2018)
Получаем дату "завтра" (1 день вперёд от сегодня) %yyyyT% %mmT% %ddT% (то есть соответственно значения 2018 01 12)

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 11-01-2018 в 23:11.


Отправлено: 23:03, 11-01-2018 | #8


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Sergey.l,
имхо (относительно вашего описанного в #7) дать сменам номера (ники, ...) и именовать ими папки передачи с добавлением даты передачи и не морочить голову ни себе ни людям.

Отправлено: 23:16, 11-01-2018 | #9


Новый участник


Сообщения: 41
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: png Снимок.PNG
(37.8 Kb, 13 просмотров)

Адаптировал ваш батник под свои команды. Просто идеально. Огромнейшее спасибо. Век буду помнить!

p.s. для справки. Когда тестировал батник не на рабочем компе, он выдал ошибку(см.вложение). С чем может быть связано? (ДЧ-это имя компьютера)
А на рабочем все идеально, отработал как часы👍
Цитата megaloman:
Sergey.l,
например с такими командами
Код: Выделить весь код
@Echo Off
cls

SetLocal EnableDelayedExpansion

CHOICE /C 123 /M "1 - Утро, 2 - Конец смены, 3 - Выйти"

If %ErrorLevel%==3 GoTo :Eof
If %ErrorLevel%==1 Call :Morning
If %ErrorLevel%==2 Call :EndDuty

pause
GoTo :Eof

:Morning
	Call :StrDate "yyyy" "mm" "dd" "hhmm"
	Call :FromNow 1 %dd%.%mm%.%yyyy% "yyyyT" "mmT" "ddT"

	2>nul md "d:\%yyyy%\%mm%\%dd%" 
	2>nul md "d:\%yyyyT%\%mmT%\%ddT%"
	Copy "d:\шаблон.doc" "d:\%yyyy%\%mm%\%dd%\%mm%_шаблон.doc"
GoTo :Eof

:EndDuty
	Call :StrDate "yyyy" "mm" "dd" "hhmm"
	Call :FromNow -1 %dd%.%mm%.%yyyy% "yyyyY" "mmY" "ddY"

	2>nul Md "d:\архив\%yyyyY%\%mmY%\%ddY%"
	move /Y "d:\%yyyyY%\%mmY%\%ddY%\%mmY%_шаблон.doc" "d:\архив\%yyyyY%\%mmY%\%ddY%\"
GoTo :Eof

:StrDate
	FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "@Tdate=%%d"
	Set "%~1=%@Tdate:~0,4%"
	Set "%~2=%@Tdate:~4,2%"
	Set "%~3=%@Tdate:~6,2%"
	Set "%~4=%@Tdate:~8,4%"
GoTo :Eof

:FromNow

rem Пересчет даты на заданное кол-во дней
rem Формат даты dd.mm.yyyy +- дни получим новые yyyymmdd

rem Заимствовано http://forum.oszone.net/thread-186889.html
rem вызов Call :FromNow %DeltaDay% %Date% "yyyy" "mm" "dd"
rem результат в перемменной %yyyy% %mm% %dd%

 SetLocal
 Set DT=%2
 Set yyyy=%DT:~-4%& set /a mm=100%DT:~3,2%%%100& set /a dd=100%DT:~,2%%%100
 Set /A JD=%~1+dd-32075+1461*(yyyy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yyyy+4900+(mm-14)/12)/100)/4
 Set /A L=JD+68569,N=4*L/146097,L=L-(146097*N+3)/4,I=4000*(L+1)/1461001
 Set /A L=L-1461*I/4+31,J=80*L/2447,K=L-2447*J/80,L=J/11
 Set /A J=J+2-12*L,I=100*(N-49)+I+L
 Set /A yyyy=I,mm=100+J,dd=100+K
 EndLocal &(Set %~3=%yyyy%&Set %~4=%mm:~-2%&Set %~5=%dd:~-2%)
GoTo :Eof
%yyyy% %mm% %dd% Это Год Месяц День сегодня
%yyyyY% %mmY% %ddY% Это Год Месяц День вчера
%yyyyT% %mmT% %ddT% Это Год Месяц День завтра
Вы получили переменные Год Месяц День, используйте их так, как Вам нужно в любой комбинации.

Например, если сегодня 11 января 2018года, то:
%yyyy%-%mm%-%dd% даст значение 2018-01-11
%dd%.%mm%.%yyyy% даст значение 11.01.2018

При вызове подпрограммы Call :StrDate "yyyy" "mm" "dd" "hhmm"
получим сегодняшние %yyyy% %mm% %dd%
Переменные можно обозвать и иначе, лишь бы было соответствие "yyyy" "mm" "dd" --> %yyyy% %mm% %dd%

Call :FromNow 1 %dd%.%mm%.%yyyy% "yyyyT" "mmT" "ddT"

По сегодняшней дате %dd%.%mm%.%yyyy% (то есть 11.01.2018)
Получаем дату "завтра" (1 день вперёд от сегодня) %yyyyT% %mmT% %ddT% (то есть соответственно значения 2018 01 12)

Отправлено: 05:57, 12-01-2018 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Батник формирующий дату вчера-сегодня-завтра для применения в командах

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
HDD - Чет с моим HHD, вчера зависал, сегодня работает на 100% мощности и выдает 1мб/сек Fox210897 Накопители (SSD, HDD, USB Flash) 3 31-05-2017 19:12
CMD/BAT - Копирование (сегодня) папки и его содержимого, если папка появилась только (вчера) tokkz Скриптовые языки администрирования Windows 0 25-11-2015 15:36
CMD/BAT - CMD проверка создания файла за (сегодня вчера) с созданием флагового файла yamixon Скриптовые языки администрирования Windows 5 17-03-2015 08:40
IGZO выходит на рынок: сегодня iPad Air, завтра мониторы и телевизоры OSZone News Новости железа 0 18-11-2013 07:30
ThinkPad вчера и сегодня. Lenovo VS IBM treehel Ноутбуки 4 09-11-2008 11:37




 
Переход