CMD установите переменную и сразу используйте ее - PullRequest
0 голосов
/ 08 апреля 2019

Я использую SET в cmd для установки новой переменной среды и сразу же использую ее для сравнения.Пользователю предлагается ввести строку, и после этого он должен проверить, соответствует ли ввод другой строке (в основном, паролю).

set /P pwd=pwd: & if %pwd%==pwd (echo yes) else (echo no)

Проблема в том, что онаПохоже, что переменная не установлена, потому что, независимо от того, введу я пароль или нет, он всегда возвращает мне номер.

Я также пытался разделить обе команды в файле .bat, но это не сработалолибо.

1 Ответ

1 голос
/ 08 апреля 2019

Ваш код не работает, потому что он в одной строке. См. set /?, setlocal /?, for /? и cmd /?, чтобы увидеть обсуждение отложенного расширения.

CMD обрабатывает пакетные файлы построчно и заполняет все %var% при чтении строки. Вот как работает MSDos, и CMD должен быть совместимым. Задержка раскрытия Переменные раскрываются, когда они используются, а не при чтении. Поскольку !var! является допустимым именем MSDos (как в %!var!%), вы должны перейти на новое поведение (в любом случае, новое в 1993 году).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...