我正在尝试创建一个批处理文件,它将根据现有的多行文本文件(10000 行以上)检查给定的术语。更具体地说,我有一个要列入黑名单的域列表,我需要能够运行该批处理文件,在该文件中输入要搜索的术语,然后回复我,看看该术语是否存在。
我试图将“if”命令与“findstr”结合起来,但由于我缺乏理解(是的,我是菜鸟)我陷入了困境。
例如,我到目前为止已经完成了这个,但它只考虑了文本文件的第一行。
@echo off
set /p domain= < raw_list.txt
set /p string="Mention the domain that you want to check: "
echo %string% | findstr /c:"%domain%" > nul && ( echo found!! )
如果有人能帮忙,我将不胜感激!提前谢谢!
答案1
此命令将仅获取文本文件的第一行:
set /p domain= < raw_list.txt
在管道中使用此命令:
echo %string% | findstr /G:raw_list.txt > nul && ( echo found!! )
如果您想在找到或未找到字符串时执行不同的命令,您可以在执行命令后检查 ERRORLEVEL(我删除了 echo 和 pipe 以简化,但它也可以与您的命令一起使用):
findstr %string% "raw_list.txt" > nul
IF %ERRORLEVEL% EQU 0 ( echo found!! ) ELSE ( echo not found!! )
最佳做法是始终用双引号括住路径(以防路径或文件名中有空格)。此外,如果适用,我建议使用完整路径。