|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Выполнение команд в бат в зависимости от времени запуска |
|
CMD/BAT - Выполнение команд в бат в зависимости от времени запуска
|
Новый участник Сообщения: 41 |
Доброго времени суток!
Помогите дописать условия выполнения команд в зависимости от времени запуска бат Например, есть вот такой код Скрытый текст
@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 |
|
Отправлено: 17:17, 14-01-2018 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата Sergey.l:
Вообще проще и правильнее делать это через планировщик, только в одно время с одними параметрами запуска в другое время с другими или разбить на два отдельных bat и запускать каждый в свое время. |
|
Отправлено: 18:41, 14-01-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать Мне не планировщик нужен. И не автоматизация процесса запуска, а зависимость когда я запускаю батник.
Я буду запускать по мере необходимости накопления писем, в течении рабочих суток. Понятно, что проще два батника сделать, но задаю здесь вопрос, чтобы узнать есть ли возможность сделать все в одном Задача состоит в том, чтобы в течении дня с 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\ Цитата alpap:
|
|
Отправлено: 19:01, 14-01-2018 | #3 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать |
Отправлено: 19:36, 14-01-2018 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Сотые доли секунды не рассматриваю - не за чем
@Echo Off cls Set "Time11=080000" Set "Time12=235959" Set "Time21=000000" Set "Time22=075959" Set "Out=D:\Dipost\BOXES\Системный ящик\1401" SetLocal EnableDelayedExpansion Call :StrDate "yyyy" "mm" "dd" "hhmmss" Call :FromNow 0 %dd%.%mm%.%yyyy% "yyyyN" "mmN" "ddN" Call :FromNow -1 %dd%.%mm%.%yyyy% "yyyyY" "mmY" "ddY" If 1%Time11% LEQ 1%hhmmss% If 1%hhmmss% LEQ 1%Time12% ( Echo Move "TraLaLa\%yyyyN%\%mmN%\%ddN%\Маска_файлов" "%Out%\" ) If 1%Time21% LEQ 1%hhmmss% If 1%hhmmss% LEQ 1%Time22% ( Echo Move "TraLaLa\%yyyyY%\%mmY%\%ddY%\Маска_файлов" "%Out%\" ) 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,6%" 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 |
|
------- Отправлено: 21:18, 14-01-2018 | #5 |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать Не затруднит написать код под любые команды? Скажем, напимер, если время 08:00-23:59 то выполняется 1, если 00:00-07:59 то 2
В таком виде код ------ 1 команды 2 команды ------ Код Цитата megaloman:
|
|
Отправлено: 00:54, 15-01-2018 | #6 |
fascinating rhythm Сообщения: 6622
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 10:14, 15-01-2018 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Что Вас не пускает написать код под любые команды?
Цитата megaloman:
Вообще-то лучше в таких ситуациях использовать подпрограммы, например:
@Echo Off cls Set "Time11=080000" Set "Time12=235959" Set "Time21=000000" Set "Time22=075959" Set "Out=D:\Dipost\BOXES\Системный ящик\1401" SetLocal EnableDelayedExpansion Call :StrDate "yyyy" "mm" "dd" "hhmmss" If 1%Time11% LEQ 1%hhmmss% If 1%hhmmss% LEQ 1%Time12% Call :Sub1 If 1%Time21% LEQ 1%hhmmss% If 1%hhmmss% LEQ 1%Time22% Call :Sub2 pause GoTo :Eof :Sub1 Call :FromNow 0 %dd%.%mm%.%yyyy% "yyyyN" "mmN" "ddN" Echo Сегодня %dd%.%mm%.%yyyy% Здесь любые команды для сегодня %dd% %mm% %yyyy% Echo Например: Move "TraLaLa\%yyyyN%\%mmN%\%ddN%\Маска_файлов" "%Out%\" GoTo :Eof :Sub2 Call :FromNow -1 %dd%.%mm%.%yyyy% "yyyyY" "mmY" "ddY" Echo Сегодня %dd%.%mm%.%yyyy% Здесь любые команды для вчера %ddY% %mmY% %yyyyY% Echo Например: Move "TraLaLa\%yyyyY%\%mmY%\%ddY%\Маска_файлов" "%Out%\" GoTo :Eof Не сообразил, что 1401 у Вас в пути скорее всего дата. Тогда надо так:
@Echo Off cls Set "Time11=080000" Set "Time12=235959" Set "Time21=000000" Set "Time22=075959" Set "Out=D:\Dipost\BOXES\Системный ящик" SetLocal EnableDelayedExpansion Call :StrDate "yyyy" "mm" "dd" "hhmmss" If 1%Time11% LEQ 1%hhmmss% If 1%hhmmss% LEQ 1%Time12% Call :Sub1 If 1%Time21% LEQ 1%hhmmss% If 1%hhmmss% LEQ 1%Time22% Call :Sub2 pause GoTo :Eof :Sub1 Call :FromNow 0 %dd%.%mm%.%yyyy% "yyyyN" "mmN" "ddN" Echo Сегодня %dd%.%mm%.%yyyy% Здесь любые команды для сегодня %dd% %mm% %yyyy% Echo Например: Move "TraLaLa\%yyyyN%\%mmN%\%ddN%\Маска_файлов" "%Out%\%dd%%mm%\" GoTo :Eof :Sub2 Call :FromNow -1 %dd%.%mm%.%yyyy% "yyyyY" "mmY" "ddY" Echo Сегодня %dd%.%mm%.%yyyy% Здесь любые команды для вчера %ddY% %mmY% %yyyyY% Echo Например: Move "TraLaLa\%yyyyY%\%mmY%\%ddY%\Маска_файлов" "%Out%\%ddY%%mmY%\" GoTo :Eof ![]() |
|
------- Последний раз редактировалось megaloman, 15-01-2018 в 11:13. Отправлено: 10:54, 15-01-2018 | #8 |
Ветеран Сообщения: 547
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Sergey.l:
BEFORE.EXE http://forum.oszone.net/post-2277704.html |
|
------- Отправлено: 00:15, 06-02-2018 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Выполнение команд без ожидания завершение предыдущих команд | vngreez@vk | Скриптовые языки администрирования Windows | 8 | 31-03-2017 23:50 | |
CMD/BAT - [решено] Выполнение блока команд после наступления определённого времени | SANIOK_AV | Скриптовые языки администрирования Windows | 2 | 07-08-2012 14:42 | |
CMD/BAT - [решено] Выполнение серии команд с заданной вероятностью запуска | RedX | Скриптовые языки администрирования Windows | 0 | 21-06-2011 11:12 | |
VBS/WSH/JS - удаление каталогов в зависимости от времени их модификации | vasyakym12 | Скриптовые языки администрирования Windows | 0 | 21-03-2011 21:45 | |
Регулировка макс. громкости в зависимости от времени суток. | Oleg_SK | Программное обеспечение Windows | 1 | 02-05-2007 13:44 |
|