如何在命令行中查找用户输入的关键字?

时间:2014-02-09 20:49:35

标签: batch-file cmd find findstr

我正在寻找的是批处理文件代码行,它将扫描用户输入的内容以查找关键字并将其指向正确的位置。这样,当受训者有问题时,他/她可以询问批处理文件,并将它们引导到正确的菜单。这可能吗?如果是这样,怎么会这样做?

:menu
set /p c=Please type you question: 
findstr /m "How to ringout a product on our system?" "%c%"
if %c%=="ringout" (
    goto :Ringingout
    ) Else (
        goto :Sorry
        )

:Ringingout
cls 
echo In order to right something out maksure you do the following:
echo - Log in
echo - click on scan in the bottom left had corner on the tender page
echo - scan items
echo - click continue
Pause
goto :Menu

:Sorry
cls
echo Sorry I don't recognize your question, please re-word it.
pause
goto :Menu

2 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL

SET "keywords=word anotherword someword"
FOR %%k IN (%keywords%) DO set "#%%k="

SET /p query="Please enter your query ? "
FOR %%k IN (%keywords%) DO CALL :analyse %%k

SET #

GOTO :EOF

:analyse
CALL SET "found=%%query:%1=%%"
IF "%found%"=="%query%" GOTO :EOF 
SET #%1=FOUND!
GOTO :eof

这是一种通用的方法。

如果输入了其中一个关键字,则变量#keyword将设置为FOUND!,以便您可以使用if defined #keyword进行处理。

它没有受到破坏性用户输入的保护 - 这不是这个问题的关键......

答案 1 :(得分:0)

最好收集文档中的所有问题(例如.html)并让用户搜索该文档以获取所需内容。但是,如果这只是一个练习,你可以重新编写你的逻辑,以使你的程序工作:

:menu
set "c="
set /p "c=Please type your question: "

echo %c% | findstr /i /b "ringout" >nul
if errorlevel 1 goto Sorry else goto Ringingout

:Ringingout

等等。