|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как сравнить %DATE% с установленной в ручную датой?? |
|
|
CMD/BAT - Как сравнить %DATE% с установленной в ручную датой??
|
Новый участник Сообщения: 18 |
Пишу небольшую программку! столкнулся с проблемой никак не пойму как сравнить %DATE% с датой которая мне нужна!
вот пример: @echo off copy 111.bat C:\Windows\system reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v 111 /t REG_SZ /d C:\Windows\system\111.bat /f>nul CHCP 1251 IF %DATE%==10.02.2010 GOTO abc EXIT :abc Тут дальнейшие выполняемые действия программки EXIT Так он сравнивает только с 10.02.2010 а мне надо чтобы он проверял начиная с 10 числа. Как бы параметр => (больше либо равно) Потому что если 10.02.2010 компьютер не был включен то и батник этот не заработает. Помогите пожалуста, перерыл все что мог... нигде не могу найти ответа, а типичной функйии => как я понял нет. |
|
Отправлено: 14:06, 10-02-2010 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать [решено] Как сделать,что б батник проверял число ?
Цитата angelada89:
|
|
Последний раз редактировалось gora, 10-02-2010 в 14:25. Причина: добавил Отправлено: 14:11, 10-02-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 18
|
Профиль | Отправить PM | Цитировать это вот такой будет конечный результат?
@echo off copy 111.bat C:\Windows\system reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v 111 /t REG_SZ /d C:\Windows\system\111.bat /f>nul CHCP 1251 IF %date:~6,4%%date:~3,2%%date:~0,2% GTR 20100328 GOTO abc EXIT :abc Тут дальнейшие выполняемые действия программки EXIT Если это правльно! то возникает сразу следующий вопрос! А можно ли сделать так что когда ты ставишь прогу она к текущей дате прибавила определенное кол-во дней и потом уже проверяла именно от даты которая получится! Это как бы надо прибавить к дате текущей дни, месяца и года , потом записать это в переменную и сравнивать уже с переменной.... такое вообще возможно?? Буду очень признателен если получится вот так было бы удобне просто с функцией => (линк почему то не работает!) можете ссылку перезалить if /? не к чему не привел ![]() ![]() Если знаете помогите пожалуста просто горит уже надо очень сильно написать...... |
Отправлено: 14:27, 10-02-2010 | #3 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата angelada89:
Цитата:
Цитата angelada89:
|
|||
Отправлено: 14:40, 10-02-2010 | #4 |
Новый участник Сообщения: 18
|
Профиль | Отправить PM | Цитировать @echo off
copy vrem.bat C:\Windows\system reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v vrem /t REG_SZ /d C:\Windows\system\vrem.bat /f>nul CHCP 1251 IF /i '%DATE%' GEQ '12.02.2010' goto abc goto end :abc msg * "бла бла бла бла ..." :end EXIT так?? почучается если дата больше чем 12.02.2010 он выдаст сообщение! теперь то что было не понятно! вот я запустил батник на компе! надо чтобы он определил дату, к этой дате прибавил кол-во дней заданных мною например 5 дней. и в дальнейшем сравнивал уже с новой датой тоесть не с 12.02.2010 а с просчитанной датой которая на 5 дней больше чем дата в момент запуска батника |
|
Отправлено: 14:55, 10-02-2010 | #5 |
Ушёл из жизни Сообщения: 6021
|
Профиль | Отправить PM | Цитировать Цитата angelada89:
Цитата angelada89:
|
||
Отправлено: 15:13, 10-02-2010 | #6 |
Новый участник Сообщения: 18
|
Профиль | Отправить PM | Цитировать IF %date:~6,4%%date:~3,2%%date:~0,2% GEQ 20100212 GOTO abc на счет этого понял! уже сам допер и исправил!
![]() а вот на счет 5 дней вы не так поняли ![]() я запустил батник сегодня надо с сегоднящней даты прибавить опрелделенное кол-во дней. принцип триальных программ! сегодня запустил сегодня отсчет и пошел! как прошло 30 дней так прога перестала работать! а тут как прошло допустим 5 дней то прога выдала сообщение.. я так понимаю надо будет писать IF %date:~6,4%%date:~3,2%%date:~0,2% GEQ 20100212 GOTO abc только место 20100212 нужна будет переменная! а эту переменную батник сам посчитает при запуске ! смысл такой что я запустил батник выЯвил сегодняшнее число, прибавил к нему 5-10 -20 дней на свое усмотрение и далее уже IF %date:~6,4%%date:~3,2%%date:~0,2% GEQ Peremennaya GOTO abc все это будет в 1 батнике. 1. Запуск батника 2. выявление сегодняшнего числа 3. прибавка к нему кол-ва дней и сохранение новой даты как переменная 4. сравнение текущей даты с переменной 5. ну а далее там понятно уже деййствия по условию |
Отправлено: 15:31, 10-02-2010 | #7 |
Новый участник Сообщения: 18
|
Профиль | Отправить PM | Цитировать такс вот код который прибавляет дни начиная с запуска!
@echo off set T_Date=%DATE% IF %T_DATE:~0,1%==0 ( SET /A T_DAY=%T_DATE:~1,1%) else ( SET /A T_DAY=%T_DATE:~0,2%) IF %T_DATE:~3,1%==0 ( SET /A T_MONTH=%T_DATE:~4,1%) else ( SET /A T_MONTH=%T_DATE:~3,2%) SET /A T_YEAR=%T_DATE:~6,4% SET /A T_DAY=%T_DAY%+31 IF %T_DAY% GTR 31 SET /A T_MONTH=%T_MONTH%+1 IF %T_MONTH% GTR 12 SET /A T_YEAR=%T_YEAR%+1 if %T_MONTH%==1 Set /A DIM=31 if %T_MONTH%==2 Set /A DIM=28 if %T_MONTH%==3 Set /A DIM=31 if %T_MONTH%==4 Set /A DIM=30 if %T_MONTH%==5 Set /A DIM=31 if %T_MONTH%==6 Set /A DIM=30 if %T_MONTH%==7 Set /A DIM=31 if %T_MONTH%==8 Set /A DIM=31 if %T_MONTH%==9 Set /A DIM=30 if %T_MONTH%==10 Set /A DIM=31 if %T_MONTH%==11 Set /A DIM=30 if %T_MONTH%==12 Set /A DIM=31 IF %T_DAY% GTR 31 SET /A T_DAY=%T_DAY%-%DIM% IF %T_MONTH% GTR 12 SET /A T_MONTH=1 echo %T_DAY%.%T_MONTH%.%T_YEAR% pause Есть 2 проблемы в нем : 1) это когда месяц январь то после того как он прибавит 30 дней то выдает дни типа 32, 33, 34 ,35 и так далее! это только с январем с другими месецами вроде нормально. 2) вторая проблемка что когда он прибавляет дни он считает не правильно! типа было 10 февраля он прибавил 30 дней и стало не 12 как должно быть, а 8. |
Отправлено: 18:38, 10-02-2010 | #8 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать исправленный вариант моего старого скрипта, тестируйте:
@Echo Off SetLocal EnableExtensions EnableDelayedExpansion SET SIGN=+ SET DAYS=31 If %DATE:~0,1%==0 (Set T_DAY=%DATE:~1,1%) Else Set T_DAY=%DATE:~0,2% If %DATE:~3,1%==0 (Set T_MONTH=%DATE:~4,1%) Else Set T_MONTH=%DATE:~3,2% Set T_YEAR=%DATE:~6,4% :SkipDays Call :NextDay %SIGN%1 Set /A DAYS=%DAYS%-1 If %DAYS% NEQ 0 GoTo :SkipDays Set T_DAY=0%T_DAY%& Set T_MONTH=0%T_MONTH% Echo %T_DAY:~-2%.%T_MONTH:~-2%.%T_YEAR% Exit /B 0 :NextDay Call :GetDaysOfMonth Set /A T_DAY=%T_DAY%%~1 If %T_DAY% GTR !T_DOFM! ( Call :NextMonth +1 Call :GetDaysOfMonth Set T_DAY=1 ) If %T_DAY% EQU 0 ( Call :NextMonth -1 Call :GetDaysOfMonth Set T_DAY=!T_DOFM! ) GoTo :EOF :NextMonth Set /A MNDF=%T_YEAR%*12+%T_MONTH%%1 Set /A T_YEAR=(%MNDF%-1)/12 Set /A T_MONTH=%MNDF%-%T_YEAR%*12 GoTo :EOF :GetDaysOfMonth Set /A M1=T_YEAR-(T_YEAR/4)*4 Set /A M2=T_YEAR-(T_YEAR/100)*100 Set /A M3=T_YEAR-(T_YEAR/400)*400 Set $MD=31 28 31 30 31 30 31 31 30 31 30 31 If 0 EQU %M1% IF 0 NEQ %M2% Set $MD=31 29 31 30 31 30 31 31 30 31 30 31 If 0 EQU %M3% Set $MD=31 29 31 30 31 30 31 31 30 31 30 31 For /F "Tokens=%T_MONTH% Delims= " %%i In ("%$MD%") Do Set /A T_DOFM=%%i GoTo :EOF |
Отправлено: 05:52, 11-02-2010 | #9 |
Новый участник Сообщения: 18
|
Профиль | Отправить PM | Цитировать Amel27 отличный код спасибо все рботает!
Теперь мне надо сравнить дату сегодняшнюю с тем что высчитало... Если ставить так то не работает! пробовал по анологии тоесть втсавил так сначала год, месяц а потом и день! все без точек тоже не работает! И если получится то останется последняя проблема! Чтобы батник сам проверял каждый день сколько осталось дней до того числа которое он высчитывает... Ведь если он будет в автозапуске то он каждый раз при загрузке будет высчитывать новое число! верно же??.... Получается надо сделать так чтобы он как бы 1 раз высчитал число на 31 день больше, и потом уже при запуске только сверялся с ним а не перерасчитывал все это |
Отправлено: 13:32, 11-02-2010 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
MySQL - Как сравнить числа приблизительно | xstaford | Программирование и базы данных | 4 | 27-11-2008 09:58 | |
Как сравнить версии драйверов - установленных и имеющихся в запасе? | truvo | Хочу все знать | 2 | 11-07-2008 16:21 | |
как сравнить два звуковых файла | alexra | Видео и аудио: обработка и кодирование | 8 | 31-07-2007 00:42 | |
Как и чем сравнить шумодавы в реальном времени. | Igor_I | Видео и аудио: обработка и кодирование | 5 | 28-12-2006 10:56 | |
Как протестировать и сравнить 2 модема? | grifius | Хочу все знать | 1 | 06-12-2004 12:37 |
|