无论如何,我一直在寻找答案,但我似乎无法找到我需要的答案。
所以基本上我的批处理文件有一个输入,你可以在其中写一个句子。这句话将带你:正确,只要它有"妈妈陈"在它。
@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"在其中,例如:"有一天,妈妈陈去购物"它应该带你去:正确。但是,它只会在用户只进入"妈妈陈"否则它只会带你:不正确的
任何人都知道如何解决这个问题?
提前致谢。
答案 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
用于不区分大小写的检查 - IF
和FIND
都使用/I
切换。