我似乎无法找到答案,所有问题似乎都集中在设置文本文件中的变量作为变量。我只想查看我提供的字符串是否存在于文本文件中的任何位置。 (在它自己的行上,不与另一个字符串共享一行)
一个例子:
%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
命令,所以对大多数人来说这可能会非常简单。谢谢你的帮助!
答案 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
。