IF NOT "%reply%" == "Who is there?" (
отлично сработал для меня с вашим исходным кодом.
Альтернативный метод для включения других действительных ответов может быть:
for %%a in ("Who is there"
"Who is it"
"Whos there"
"Who's there") do (
if /i "%%~a"=="%reply%" goto valid
if /i "%%~a"=="%reply%?" goto valid
)
ECHO "Sorry, but you are not playing the game right!"
GOTO :EOF
:valid
Обратите внимание, что список элементов, которые являютсяЗначение valid может быть разделено между строками, как показано, но каждый элемент должен быть заключен в кавычки, поскольку он содержит пробелы.
Размещение скобок является критическим.
Элемент "%%~a"
означает, что он принимает значение %%a
, удаляет все заключенные в кавычки, а затем повторно применяет кавычки.Таким образом, ответ типа Qui
также может быть принят и указан в списке, но, поскольку он не содержит пробелов, элемент Qui
может быть , необязательно в кавычках.