Batch file 使用windows批处理在文本文件中搜索字符串

Batch file 使用windows批处理在文本文件中搜索字符串,batch-file,cmd,windows-scripting,Batch File,Cmd,Windows Scripting,我正在尝试检查文本文件out.txt中是否有特定字符串(Lost=0),并根据错误级别将结果回显到文本文件中。如果文本文件中存在该字符串,我需要回显服务已启动,否则服务将关闭 我正在使用下面的代码,但它不起作用。我总是在服务启动时退出你能告诉我脚本有什么问题吗 echo off findstr /c:"Lost = 0" "out.txt" >nul if ERRORLEVEL 1 ( @echo service is up >result.txt ) else ( @e

我正在尝试检查文本文件
out.txt
中是否有特定字符串(
Lost=0
),并根据错误级别将结果回显到文本文件中。如果文本文件中存在该字符串,我需要回显服务已启动,否则服务将关闭

我正在使用下面的代码,但它不起作用。我总是在
服务启动时退出
你能告诉我脚本有什么问题吗

echo off

findstr  /c:"Lost = 0" "out.txt" >nul

if ERRORLEVEL 1 ( @echo service is up >result.txt 

) else (

@echo service is down >result.txt)

您可以使用
for/F
和给定的分隔符(“=”)来检查匹配的字符串,而不是检查错误级别:


注意标记和结果字符串。在您的情况下,第二个令牌是“n”(带前导空格),n是丢失的值。

服务是否始终启动?你测试过包含“Lost=0”的out.txt文件吗?@lit:是的,我尝试过Lost=0,甚至完全删除了那一行。但是仍然得到服务是向上的消息我在result.txt文件中得到“服务是向下的”。很抱歉我不确定我能帮上忙。@acr不,这不是正确的方法。您的代码应该说明如果errorlevel1(echo服务关闭)或者(echo服务启动)您使用的是FIND还是FINDSTR?
@echo off
for /F "tokens=2 delims==" %%E in ('
    findstr /c:"Lost =" "out.txt"
') do set str=%%E

if "%str%" == " 0" (echo service is up) else (echo service is down)