Убедитесь, что пользовательский ввод является одним из нескольких разрешенных слов - PullRequest
0 голосов
/ 26 апреля 2018

Так что у меня возникли проблемы с этой строкой кода, которая предназначена для проверки, соответствует ли пользовательский ввод указанным параметрам.

set /p "myVar=---> " 
echo %myVar%|findstr /ix "red:Red:blue:Blue">nul && ( 
 echo %myVar% matched 
 ) || ( 
 echo %myVar% not matched 
 ) 

Есть ли способ, которым я могу пойти, как описано выше, или каким-либо другим способом?

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

Я думаю, choice ваш лучший друг здесь. Но если вы хотите сделать это без choice (это доступно не во всех версиях Windows):

set /p "myVar=---> "
echo %myVar%|findstr /ix "a e i o u y">nul && (
  echo %myVar% matched
) || (
  echo %myVar% not matched
)

Он запрашивает ввод и проверяет, является ли он одним из символов в списке, игнорируя заглавные буквы.

0 голосов
/ 26 апреля 2018

Вы можете использовать тот факт, что for /F возвращает код выхода 1 в случае нулевых итераций:

set /P VAR="Enter something: " || ((echo Empty input!) & exit /B)
(for /F "delims=AaEeIiOoUuYy eol=y" %%K in ("%VAR%") do rem/) && (
    echo No match found!
) || (
    echo Match encountered.
)

Если ввод состоит только из символов, перечисленных после delims=, цикл for /F не повторяется и возвращает код выхода 1; команда за && выполняется только в том случае, если код выхода 0, команда за || выполняется только в случае, если код выхода не 0.
Если ввод не предоставлен, set /P устанавливает код выхода на 1.

0 голосов
/ 26 апреля 2018

Вот базовый пример того, что вы хотите сделать. Я не тестировал в DOS, поскольку у меня нет ни одной виртуальной машины (или очень старого компьютера) прямо здесь, но IIRC это также должно работать в простой DOS.

@echo off
if %var% == A GOTO :anything
if %var% == E GOTO :anything
if %var% == I GOTO :anything
if %var% == O GOTO :anything
if %var% == U GOTO :anything
if %var% == Y GOTO :anything
goto end
:anything
echo anything
:end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...