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

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

hexer54539 03-02-2022 10:29 2979219

Вывод ошибки если ответ любой кроме yes и no (BAT)
 
Мне нужно сделать батник который отвечает на любой символ ошибкой например:
ответ duf0fwf = Unknown error
ответ 875437 = Unknown error
ответ T = Unknown error

echo Skip Mesh Editing?
set /p x=
if /i %x%==yes goto skipmesh
if /i %x%==no goto MeshEdit
if /i %x%==%ascii% echo Unknown Answer
if /i %x%==%random% echo Unknown Answer
if "%errorlevel%"=="%ascii%" cls Echo Unknown Answer
if "%errorlevel%"=="%random%" cls Echo Unknown Answer
Помогите пожалуйста и главное чтобы только отвечало на yes и no
Любой символ должен вывести ошибку

bredych 03-02-2022 13:34 2979230

Граждане, а чего вы массово игнорируете раздел
http://forum.oszone.net/forum-102.html
Который вообще-то для этого и предназначен?

megaloman 03-02-2022 19:28 2979254

Для диалога удобнее и надежнее использовать CHOICE. Неверный выбор просто не воспринимается.
Код:

@Echo Off
cls
        CHOICE /N /CS /C yn /M "Введите y=yes или n=no"
        Set /A Out=%Errorlevel%

        If %Out%==1 Call :skipmesh
        If %Out%==2 Call :MeshEdit
pause
Exit /B

:skipmesh
        Echo yes=skipmesh
Exit /B

:MeshEdit
        Echo no=MeshEdit
Exit /B

Если всё-таки хочется через Set /P
Код:

@Echo Off
cls
        Call :YesNo "YesNo"
        If "%YesNo%"=="yes" (Call :skipmesh) Else (Call :MeshEdit)
pause
Exit /B

:YesNo
SetLocal
:BeginYesNo       
        Set "Ans="
        Set /P Ans=Input yes no:
        If Not "%Ans%"=="no" If Not "%Ans%"=="yes" (
                Echo Answer="%Ans%". Unknown error!
                GoTo :BeginYesNo
        )
EndLocal &Set "%~1=%Ans%"
Exit /B

:skipmesh
        Echo yes=skipmesh
Exit /B

:MeshEdit
        Echo no=MeshEdit
Exit /B

Можно так:
Код:

@Echo Off
cls
        Call :YesNo "yes_skipmesh" "no_MeshEdit"
pause
Exit /B

:YesNo
SetLocal
:BeginYesNo       
        Set "Ans="
        Set /P Ans=Input yes no:
        If Not "%Ans%"=="no" If Not "%Ans%"=="yes" (
                Echo Answer="%Ans%". Unknown error!
                GoTo :BeginYesNo
        )
EndLocal &If "%Ans%"=="yes" (Call :%~1) else (Call :%~2)
Exit /B

:yes_skipmesh
        Echo yes_skipmesh
Exit /B

:no_MeshEdit
        Echo no_MeshEdit
Exit /B



Время: 13:28.

Время: 13:28.
© OSzone.net 2001-