Sergey.l
14-01-2018, 17:17
Доброго времени суток!
Помогите дописать условия выполнения команд в зависимости от времени запуска бат
Например, есть вот такой код
@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"
Echo %ddY%.%mmY%.%yyyyY% - Вчера
Echo %ddN%.%mmN%.%yyyyN% - Сегодня
Echo %ddT%.%mmT%.%yyyyT% - Завтра
==================================================================================================== ==========
rem Выполняется с 08:00:00,00 до 23:59:59,99 (ДЕНЬ)
move /y "D:\Dipost\BOXES\Системный ящик\Удаленные\*.*" "D:\Dipost\BOXES\Системный ящик\%ddN%%mmN%\вход\"
move /y "D:\Dipost\BOXES\Системный ящик\Отправленные\*.*" "D:\Dipost\BOXES\Системный ящик\%ddN%%mmN%\отпр\"
move /y "D:\Dipost\BOXES\Системный ящик\Уведомления\*.*" "D:\Dipost\BOXES\Системный ящик\%ddN%%mmN%\увед\"
rem Выполняется с 00:00:00,00 до 07:59:59,99 (НОЧЬ)
move /y "D:\Dipost\BOXES\Системный ящик\Удаленные\*.*" "D:\Dipost\BOXES\Системный ящик\%ddY%%mmY%\вход\"
move /y "D:\Dipost\BOXES\системный ящик\Отправленные\*.*" "D:\Dipost\BOXES\Системный ящик\%ddY%%mmY%\отпр\"
move /y "D:\Dipost\BOXES\системный ящик\Уведомления\*.*" "D:\Dipost\BOXES\Системный ящик\%ddY%%mmY%\увед\"
==================================================================================================== ==========
: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 вызов 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
pause
Задача состоит в том, чтобы в течении дня с 08:00:00,00 до 23:59:59,99 запускать батник в котором выполнялись команды move c переменными Сегодня "yyyyN" "mmN" "ddN" и перемещали письма в указанные папки с датой дежурства, например D:\Dipost\BOXES\Системный ящик\1401\
После полуночи с 00:00:00,00 до 07:59:59,99 дата меняется и требуется, чтобы в батнике выполнялись команды с переменными Вчера "yyyyY" "mmY" "ddY", перемещая письма в D:\Dipost\BOXES\Системный ящик\1401\
Просьба не советовать как можно это сделать в PowerShell, WSH и т.д. мне нужна помощь в указанном выше BAT
p.s. За батник с датой вчера-сегодня-завтра спасибо пользователю megaloman
Помогите дописать условия выполнения команд в зависимости от времени запуска бат
Например, есть вот такой код
@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"
Echo %ddY%.%mmY%.%yyyyY% - Вчера
Echo %ddN%.%mmN%.%yyyyN% - Сегодня
Echo %ddT%.%mmT%.%yyyyT% - Завтра
==================================================================================================== ==========
rem Выполняется с 08:00:00,00 до 23:59:59,99 (ДЕНЬ)
move /y "D:\Dipost\BOXES\Системный ящик\Удаленные\*.*" "D:\Dipost\BOXES\Системный ящик\%ddN%%mmN%\вход\"
move /y "D:\Dipost\BOXES\Системный ящик\Отправленные\*.*" "D:\Dipost\BOXES\Системный ящик\%ddN%%mmN%\отпр\"
move /y "D:\Dipost\BOXES\Системный ящик\Уведомления\*.*" "D:\Dipost\BOXES\Системный ящик\%ddN%%mmN%\увед\"
rem Выполняется с 00:00:00,00 до 07:59:59,99 (НОЧЬ)
move /y "D:\Dipost\BOXES\Системный ящик\Удаленные\*.*" "D:\Dipost\BOXES\Системный ящик\%ddY%%mmY%\вход\"
move /y "D:\Dipost\BOXES\системный ящик\Отправленные\*.*" "D:\Dipost\BOXES\Системный ящик\%ddY%%mmY%\отпр\"
move /y "D:\Dipost\BOXES\системный ящик\Уведомления\*.*" "D:\Dipost\BOXES\Системный ящик\%ddY%%mmY%\увед\"
==================================================================================================== ==========
: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 вызов 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
pause
Задача состоит в том, чтобы в течении дня с 08:00:00,00 до 23:59:59,99 запускать батник в котором выполнялись команды move c переменными Сегодня "yyyyN" "mmN" "ddN" и перемещали письма в указанные папки с датой дежурства, например D:\Dipost\BOXES\Системный ящик\1401\
После полуночи с 00:00:00,00 до 07:59:59,99 дата меняется и требуется, чтобы в батнике выполнялись команды с переменными Вчера "yyyyY" "mmY" "ddY", перемещая письма в D:\Dipost\BOXES\Системный ящик\1401\
Просьба не советовать как можно это сделать в PowerShell, WSH и т.д. мне нужна помощь в указанном выше BAT
p.s. За батник с датой вчера-сегодня-завтра спасибо пользователю megaloman