批处理 - 搜索指定字符串的文本文件,如果找到,则将变量设置为1

时间:2013-08-11 08:43:15

标签: variables search for-loop batch-file

我似乎无法找到答案,所有问题似乎都集中在设置文本文件中的变量作为变量。我只想查看我提供的字符串是否存在于文本文件中的任何位置。 (在它自己的行上,不与另一个字符串共享一行)

一个例子:

%usrname%= fish

%banfile%=只是一个包含NOTHING的文本文件。

for /f "usebackq tokens=*" %%f in ('find /c /i "%usrname%" "%banfile%"') do set banned=1

即使文本文件中没有任何内容,它仍设置%banned%= 1。我希望它只有在文本文件中找到一个或多个字符串“fish”时才设置变量%banned%= 1。

我刚刚开始理解for命令,所以对大多数人来说这可能会非常简单。谢谢你的帮助!

2 个答案:

答案 0 :(得分:4)

您不需要for循环:

find /i "%usrname%" "%banfile%" >nul 2>&1&&set /a banned=1 || set /a banned=0
echo %banned%

答案 1 :(得分:1)

要在没有其他文字的行上找到fish,您可以使用:

@echo off
set "usrname=fish"
set "banfile=c:\folder\file.txt"
set "banned="
findstr /i /r "^%usrname%$" "%banfile%" >nul && set banned=1

/ i使其不区分大小写,并且它会在文件中的任何位置单独找到fish