Компьютерный форум 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=317236)

Mr.Merak 28-07-2016 08:22 2654716

Проверка на определенный символ при вводе
 
Всем привет.
Подскажите как словить ввод определенного символа. Т.е. если ввели 1 - сделали одно, если 2 - другое, а если добавить символ n к любому из параметров - выполнить третье (например 2a)

Код:

Set /p choice="Enter: "
if "%choice%"=="1" ...
if "%choice%"=="2" ...
if "%choice%"==...

Спасибо.

megaloman 28-07-2016 13:36 2654842

Код:

@echo off
cls

Set /p choice="Enter: "

if "%choice%"=="1" Call :Sub1
if "%choice%"=="2" Call :Sub2

if "%choice:~0,1%"=="1" If Not "%choice%"=="1" Call :Sub3
if "%choice:~0,1%"=="2" If Not "%choice%"=="2" Call :Sub3

pause
GoTo :Eof

:Sub1
Echo kuku1
GoTo :Eof

:Sub2
Echo kuku2
GoTo :Eof

:Sub3
Echo kuku3
GoTo :Eof


Mr.Merak 28-07-2016 14:37 2654861

Цитата:

Цитата megaloman
if "%choice:~0,1%"=="1" If Not "%choice%"=="1" Call :Sub3 »

это получается если я введу что угодно начинающееся на 1 или 2 (например, 22222222222222) то выполняется п.3

спасибо за совет, но это чутка не то... у меня там просто очень много вариант ответа и мне нужно, чтоб если к любому из них добавить какой то символ, например 122a то выполнить соотв. команду

Iska 28-07-2016 15:53 2654893

Mr.Merak, получается, что«1a», «2a», «3a» должны выполнять одну и ту же процедуру?

Mr.Merak 28-07-2016 18:55 2654988

Iska, да!

ввели 1 - выполнили процедуру 1
ввели 2 - выполнили процедуру 2
ввели 3 - выполнили процедуру 3

НО если к любому из вариантов добавить символ "a", например 1а или 2а - выполнили процедуру 4

alpap 28-07-2016 19:41 2655006

Mr.Merak,
Ну если в параметре будет 1a, то так все равно будет выполняться именно вариант для a:
Код:

@echo off

Set /p choice="Enter: "
if "%choice%"=="1" Call :Sub1
if "%choice%"=="2" Call :Sub2
if "%choice%"=="1a" Call :Sub3
if "%choice%"=="2a" Call :Sub3
>nul pause& exit
:Sub1
 echo 1
exit/b

:Sub2
 echo 2
exit/b

:Sub3
 echo 1a/2a
exit/b


Iska 28-07-2016 21:51 2655031

Цитата:

Цитата Mr.Merak
НО если к любому из вариантов добавить символ "a", например 1а или 2а - выполнили процедуру 4 »

Mr.Merak, тогда я не вижу ни смысла, ни логики в Вашем алгоритме. Пусть вводят просто «a», зачем тогда тут перед ним нужно число, если оно ни на что не влияет?!

megaloman 28-07-2016 22:20 2655036

Mr.Merak, Ну Вы на ходу постановку меняете. Вот общее решение: задаём массив возможных ответов и соответственно ему массив номеров действий (вызываемых процедур). При большом количестве возможных ответов это проще, чем писать кучу If
Код:

@echo off
cls

Set "TAns=1 2 3 1a 2a 3b"
Set "NAns=1 2 3 4  4  3"

SetLocal EnableDelayedExpansion

Set /p choice="Enter: "

Call :NSub "%choice%" "N"
If %N% NEQ 0 (Call :Sub%N%) Else (Echo Answer %choice% not correct)

Pause
GoTo :Eof

:NSub
        Set /A %~2=0
        FOR %%i IN (%TAns%) DO (
                Set /A %~2+=1
                If /I "%%i"==%1 GoTo :Continue
        )
        Set /A %~2=0
        GoTo :Eof
        :Continue

        Set /A ii=0
        FOR %%i IN (%NAns%) DO (
                Set /A ii+=1
                If /I !ii! EQU !%~2! (Set /A %~2=%%i & GoTo :Eof)
        )
        Set /A %~2=0
GoTo :Eof

:Sub1
Echo kuku1
GoTo :Eof

:Sub2
Echo kuku2
GoTo :Eof

:Sub3
Echo kuku3
GoTo :Eof

:Sub4
Echo kuku4
GoTo :Eof


Mr.Merak 29-07-2016 08:46 2655090

megaloman, да это оно! Спасибо!
на ходу вроде ничего не менял, сори, мож просто нормально не смог объяснить...


Время: 22:19.

Время: 22:19.
© OSzone.net 2001-