К сожалению, как уже отмечалось, невозможно использовать метки в командной строке.
В рамках вашего вопроса ваш лучший вариант - заключить каждую из подпрограмм в команды if / else
и заменить цикл на начало бесконечным циклом. Итак, вы заканчиваете чем-то вроде этого («читаемый» прототип)
for /l %a in (0) do (
cls
& echo -create (create password)
& echo -check (check password)
& echo/
& set pass=
& set p=
& set /p p=What do you want to do?
& cls
& (if !p!==create (
set /p pass=What do you want your password to be?:
& (echo !pass!)>test.txt
) else if !p!==check (
set /p pass=What is your password?
& set /p text=<test.txt
& if !pass!==!text! (
echo You are right !!!
) else (
echo You are wrong !!!
)
) else (
echo wrong command !!!
))
& echo/ & pause
)
Примечания:
-
goto :start
теперь представляет собой бесконечный цикл for /l
.
- Каждая команда, являющаяся продолжением предыдущей, нуждается в операторе
&
. Первая команда внутри блока if
или else
не должна иметь ее.
- Поскольку мы меняем переменные и извлекаем измененное значение внутри одной и той же строки, нам нужно будет использовать отложенное расширение (
!var!
).
- Поскольку отложенное расширение будет использоваться в командной строке, нам нужно будет включить некоторые ключи в
cmd
call
Теперь, когда все в строке:
cmd /e /v /c"for /l %a in (0) do ( cls & echo -create (create password) & echo -check (check password) & echo/ & set pass= & set p= & set /p p=What do you want to do? & cls & (if !p!==create ( set /p pass=What do you want your password to be?: & (echo !pass!)>test.txt ) else if !p!==check ( set /p pass=What is your password? & set /p text=<test.txt & if !pass!==!text! ( echo You are right !!! ) else ( echo You are wrong !!! ) ) else ( echo wrong command !!! )) & echo/ & pause )"
/e
(включить расширения, обычно уже включены, но на всякий случай), /v
(включить отложенное расширение) включены, чтобы обеспечить создание нового экземпляра cmd
с требуемой конфигурацией.
И, в любом случае, помните, что самая длинная командная строка, которую вы можете написать, имеет длину 8191 символов.