0

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

一个例子:

%usrname%= 鱼

%banfile%= 只是一个没有任何内容的文本文件。

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

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

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

4

2 回答 2

4

你不需要一个for循环:

find /i "%usrname%" "%banfile%" >nul 2>&1&&set /a banned=1 || set /a banned=0
echo %banned%
于 2013-08-11T08:53:08.037 回答
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在文件中的任何位置自行查找一行。

于 2013-08-11T12:11:26.867 回答