如果a / p输入中包含某个单词

时间:2015-12-01 15:19:22

标签: variables batch-file if-statement

希望你们感恩节快乐!

无论如何,我一直在寻找答案,但我似乎无法找到我需要的答案。

所以基本上我的批处理文件有一个输入,你可以在其中写一个句子。这句话将带你:正确,只要它有"妈妈陈"在它。

@echo off
:start
set /p test=Write a sentene with the word Mommy Chan in it: 

if "%test%"=="Mommy Chan" goto correct
if "%test%" NEQ "Mommy Chan" goto incorrect

:correct
cls
echo %test%
echo you did it
pause
goto start

:incorrect
cls
echo %test%
echo you didn't follow directions
pause
goto start

现在,这似乎有效并带给你:如果用户输入单词" Mommy Chan"输入,没有别的。然而,假设用户输入了" Not Mommy Chan"它似乎没有认识到这个词是" Mommy Chan"包括在内,它会带你:不正确的

显然我不想要那个。

为了澄清,我想要它,这样如果你输入任何带有" Mommy Chan"在其中,例如:"有一天,妈妈陈去购物"它应该带你去:正确。但是,它只会在用户只进入"妈妈陈"否则它只会带你:不正确的

任何人都知道如何解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:5)

一种可能的方式:

@echo off
:start
set /p test=Write a sentene with the word Mommy Chan in it: 
::replaces "Mommy Chan" in %test% to see if it was changed
if "%test:Mommy Chan=%" equ "%test%" goto incorrect
if "%test:Mommy Chan=%" neq "%test%"  goto correct
exit /b 0

:correct

echo correct

exit /b 0


:incorrect

echo incorrect

exit /b 0

另一个(可能更慢,因为它调用find.exe):

@echo off
:start
set /p test=Write a sentene with the word Mommy Chan in it: 

echo %test%|find "Mommy Chan"  >nul 2>nul && (
  goto :correct
  color
)||(
   goto incorrect
)
exit /b 0

:correct

echo correct

exit /b 0


:incorrect

echo incorrect

exit /b 0 

用于不区分大小写的检查 - IFFIND都使用/I切换。