Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Для диалога удобнее и надежнее использовать 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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 03-02-2022 в 20:11.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:28, 03-02-2022 | #3