epoddubniy |
24-07-2021 13:48 2962758 |
Оператор IF несколько условий
Здравствуйте.
Помогите пожалуйста. Нужно, чтобы, переходило к соответствующей метке перехода
в этом выражении какая-то ошибка. Его суть, если не выполняется ни одно из предыдущих условий, то....
Код:
if (("%virazhenie%" neq "stroka1") & ("%virazhenie%" neq "stroka2") & ("%virazhenie%" neq "stroka3")) goto NetSovpadeniy
Непосредственно, код бадника
Код:
set /p virazhenie=
if "%virazhenie%"=="stroka1" goto stroka1
if "%virazhenie%"=="stroka2" goto stroka2
if "%virazhenie%"=="stroka3" goto stroka3
if (("%virazhenie%" neq "stroka1") & ("%virazhenie%" neq "stroka2") & ("%virazhenie%" neq "stroka3")) goto NetSovpadeniy
pause
:stroka1
echo stroka1
pause
:stroka2
echo stroka2
pause
:stoka3
echo stroka3
pause
:NetSovpadeniy
echo NetSovpadeniy
pause
|
Цитата:
Цитата epoddubniy
если не выполняется ни одно из предыдущих условий, то.... »
|
Так Вы уже выше все эти условия проверили, тогда зачем ещё одно условие создавать?
Сразу переходите по указателю
|
epoddubniy, несколько If через & ИМХО не аналогичен and из других языков программирования и работать не будет. И, ИМХО, массированное применение GoTo потом очень затрудняет чтение и отладку кода. Удобнее использовать псевдопроцедуры.
Код:
@Echo Off
cls
set /p virazhenie=Input stroka# ^>
if "%virazhenie%" neq "stroka1" If "%virazhenie%" neq "stroka2" If "%virazhenie%" neq "stroka3" Call :NetSovpadeniy &Exit /B
if "%virazhenie%"=="stroka1" Call :stroka1
if "%virazhenie%"=="stroka2" Call :stroka2
if "%virazhenie%"=="stroka3" Call :stroka3
Pause
Exit /B
:stroka1
echo stroka1
Exit /B
:stroka2
echo stroka2
Exit /B
:stroka3
echo stroka3
Exit /B
:NetSovpadeniy
echo NetSovpadeniy
Pause
Exit /B
Или
Код:
@Echo Off
cls
set /p virazhenie=Input stroka# ^>
if "%virazhenie%" neq "stroka1" If "%virazhenie%" neq "stroka2" If "%virazhenie%" neq "stroka3" Call :NetSovpadeniy &Exit /B
Call :%virazhenie%
Pause
Exit /B
:stroka1
echo stroka1
Exit /B
:stroka2
echo stroka2
Exit /B
:stroka3
echo stroka3
Exit /B
:NetSovpadeniy
echo NetSovpadeniy
Pause
Exit /B
|
epoddubniy |
29-07-2021 06:37 2963073 |
megaloman, скажите пожалуйста, как правильно реализовать
если , то возврат к
Код:
set /p virazhenie=Input stroka# ^>
|
epoddubniy,
Если в рамках предыдущих кодов
Код:
@Echo Off
:Begin
cls
set /p virazhenie=Input stroka# ^>
if "%virazhenie%" neq "stroka1" If "%virazhenie%" neq "stroka2" If "%virazhenie%" neq "stroka3" Call :NetSovpadeniy &GoTo :Begin
..........
..........
Однако это трудоёмко при использовании набирать stroka1, stroka2, stroka3. Если процедура: "нет совпадения" нужна только для выдачи информации, она вообще не нужна.
Как вариант
Код:
@Echo Off
cls
Echo Type 1,2,3,C
CHOICE /C 123C /N /M "1-stroka1, 2-stroka1, 3-stroka1, C-завершить"
Set /A Out=%Errorlevel%
If %Out%==4 Exit /B
If %Out%==1 Call :stroka1
If %Out%==2 Call :stroka2
If %Out%==3 Call :stroka3
Pause
Exit /B 0
:stroka1
echo stroka1
Exit /B
:stroka2
echo stroka2
Exit /B
:stroka3
echo stroka3
Exit /B
|
Время: 16:08.
© OSzone.net 2001-