CMD/BAT - Проверка на определенный символ при вводе

Ответить
Аватара пользователя
Mr.Merak

CMD/BAT - Проверка на определенный символ при вводе

Сообщение Mr.Merak »

Всем привет.

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





Код:

Код: Выделить всё

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

Спасибо.
Аватара пользователя
megaloman

Re: CMD/BAT - Проверка на определенный символ при вводе

Сообщение megaloman »

Код:

Код: Выделить всё

@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

Re: CMD/BAT - Проверка на определенный символ при вводе

Сообщение Mr.Merak »

Цитата megaloman:



if "%choice:~0,1%"=="1" If Not "%choice%"=="1" Call :Sub3
CMD/BAT - Проверка на определенный символ при вводе




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



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

Re: CMD/BAT - Проверка на определенный символ при вводе

Сообщение Iska »

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

Re: CMD/BAT - Проверка на определенный символ при вводе

Сообщение Iska »

Iska, да!



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

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

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



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

Re: CMD/BAT - Проверка на определенный символ при вводе

Сообщение alpap »

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

Re: CMD/BAT - Проверка на определенный символ при вводе

Сообщение Iska »

Цитата Mr.Merak:



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




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

Re: CMD/BAT - Проверка на определенный символ при вводе

Сообщение megaloman »

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

Re: CMD/BAT - Проверка на определенный символ при вводе

Сообщение Mr.Merak »

megaloman, да это оно! Спасибо!

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

Вернуться в «Скриптовые языки администрирования Windows»