Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   как написать цикл с проверкой вводимых данных? (http://forum.oszone.net/showthread.php?t=169305)

angelada89 06-03-2010 10:50 1362251

как написать цикл с проверкой вводимых данных?
 
вот кусок кода:
Код:

If %less% GTR 0 (          msg * "Внимание осталось %less% дней"            )
Else (          Echo %prd% дней закончилось, введите ключ          pause>nul  )

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

amel27 06-03-2010 15:18 1362348

Цитата:

Цитата angelada89
если ключ правильный то программа продолжает работать если нет то выдает сообщение что он не правильный и предлагает заново ввести ключ »

Код:

@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

Set lss=0
Set prd=10
Set key=123-ABC-456

:LOOP
If %lss% GTR 0 (msg * "Внимание! Осталось %lss% дней.") Else (
Set /P ink="%prd% дней закончилось, введите ключ: "
If /I Not "!ink!"=="%key%" Echo Ключ неверен^^^!& GoTo LOOP )


angelada89 06-03-2010 17:00 1362415

огромное спасибо! а как теперь привязать удаление из реестра строки если ключ введен правильно??

Код:

@Echo Off 
SetLocal EnableExtensions EnableDelayedExpansion 
CHCP 1251  :: Первый запуск скрипта и запоминание даты в файл fstStrt.lst 
If Not Exist fstStrt.lst Echo %date%>fstStrt.lst& Exit   
:: Второй и последующие запуски скрипта   
For /F %%I In (fstStrt.lst) Do Set fstStrt=%%I     
Set fstStrt=25.01.2010   
Set prd=30 
Set key=123456 
Call :JDat %date% 
Set less=%JDate% 
Call :JDat %fstStrt% 
Set /a less=JDate+prd-less 
:LOOP  If %less% GTR 0 (          msg * "Внимание осталось %less% дней"            ) Else (          Set /P ink= "%prd% дней закончилось, введите ключ: "          If /I Not "!ink!"=="%key%" Echo Ключ неверен^^^!& GoTo LOOP  )  Exit   
:JDat  Set dat=%1  Set /a m=(1%dat:~3,2%-114)/12  Set /a JDate=1%dat:~0,2%+((1%dat:~3,2%-102-m*12)*367+((%dat:~6%+m)*487-49-(%dat:~6%+m)/100)*9)/12 
GoTo:EOF

вот теперь надо сделать так что при первом запуске программа делает 2 записи в реестр одна в авторане чтобы программа запускала себя каждый раз при в ключении и сверялась с датой!
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v PROGA /t REG_SZ /d C:\Windows\system\PROGA.bat /f>nul

а вторая запись которая бы потом не давала заново запускать программу когда кончится время!
а если ввели ключ то 2 запись с реестра бы просто удалилась.

amel27 07-03-2010 11:34 1362822

Цитата:

Set dat=%1 Set /a m=(1%dat:~3,2%-114)/12
код нерабочий - каждая CMD-команда должна идти с новой строки

angelada89 07-03-2010 14:42 1362929

да я знаю! =) просто так копирнулось не доглядел=)


Время: 09:21.

Время: 09:21.
© OSzone.net 2001-