Допустим, у вас есть такой пакетный файл:
@echo off
setlocal
:part1
echo.
echo Part 1: Your Name
echo.
if "%1"=="err1" echo * You must supply a name! *&echo.
echo Please enter your name below.
echo.
set /p yourName=": "
if "%yourName%"=="" call :part1 err1
if /i "%yourName%"=="/q" goto :eof
goto :part2
:part2
echo.
echo Part 2: Your Age
echo.
if "%1"=="err1" echo * You must supply your age! *&echo.
echo Please enter your age below.
echo.
set /p yourAge=": "
if "%yourAge%"=="" call :part2 err1
if /i "%yourAge%"=="/q" goto :eof
goto :part3
:part3
echo.
echo Part 3: Your Favorite Number
echo.
if "%1"=="err1" echo * You must supply the number! *&echo.
echo Please enter your favorite number below.
echo.
set /p yourNum=": "
if "%yourNum%"=="" call :part3 err1
if /i "%yourNum%"=="/q" goto :eof
goto :part4
:part4
echo.
echo We're done!
echo.
echo Thanks %yourName%, I now know you are %yourAge% and like # %yourNum%!
goto :eof
Я хочу проверить ввод, а также иметь возможность прерывать процесс на каждом шаге.Это работает великолепно;пока кто-то не облажается и не запускает проверку.Я попытался перейти к: label err1, но GOTO не позволяет передавать параметры.Поэтому я перешел на CALL.Проблемы 1, кажется, что% 1 сохраняется, потому что после того, как я пытаюсь ввести пустое имя, он кричит на меня, чтобы ввести имя.Я делаю, затем на следующем экране сразу же кричит, что я должен ввести возраст, хотя у меня еще не было шанса.Вторая проблема заключается в том, что если я пытаюсь завершить работу, goto: eof просто закрывает цикл CALL и отправляет меня туда, откуда возник CALL, и продолжается.
Каков правильный способ справиться с этим ??Спасибо!