我有一个文本文件,我想运行一个批处理文件,它读取整个文本文件并告诉我no:出现字符串“PASS”:
你能帮忙解决一下这个问题 - 我无法理解BAT文件中令牌的用法。
答案 0 :(得分:4)
也许findstr
命令可以帮助您:Findstr Help。
它不会打印出现的次数,但也许你可以对结果做些什么。
更新:
Find command有一个/c
选项,用于计算包含该字符串的行数。
答案 1 :(得分:3)
Mulmoth的答案很好,通常它可以解决你的问题。
但是由于您不理解令牌,我会尝试解释它。
您可以使用FOR/F
命令读取文件的内容
FOR/F
将逐行读取文件,每个空行都将被跳过,每行也以EOL字符开头(默认为;
)。
它默认使用tokens=1 delims=<TAB><SPACE> EOL=;
在这种情况下,您总是有一个令牌直到行结束或直到第一个SPACE
或TAB
。
for /F "tokens=1" %%a in (myFile.txt) do (
echo token1=%%a
)
如果你想阅读更多的令牌,那么你需要定义它。
for /F "tokens=1,2,3,4" %%a in (myFile.txt) do (
echo token1=%%a token2=%%b token3=%%c token4=%%d
)
现在,如果一行中的delim更少,那么该行将在分隔符(SPACE或TAB)中分割成四个标记,然后标记为空。
如果您不想要多个令牌,或者在特定令牌之后,您可以使用*
。for /F "tokens=1*" %%a in (myFile.txt) do (
echo token1=%%a token2=%%b token3=%%c token4=%%d
)
。
for / F“tokens = 1,2,3,4 *”%% a in(myFile.txt)do(
echo token1 = %% a token2 = %% b token3 = %% c token4 = %% d
)
现在,在token4中将是第四个标记和行的其余部分。
%%a
在这种情况下,只存在一个令牌(%%b
)其他令牌(%%c
%%d
token2=%b token3=%c token4=%d
)不是有效令牌,文本{{1}}将得到回应。
您还可以使用delim将all减少到只有一个令牌。 for / F“delims =”%% a in(myFile.txt)do( echo complete line = %% a )
这是有效的,因为只有一个令牌,因为没有任何字符可以将该行划分为更多的令牌。