Batch file 如果在文本文件中找到字符串,则批处理脚本将终止进程

Batch file 如果在文本文件中找到字符串,则批处理脚本将终止进程,batch-file,replace,kill-process,string-search,text-search,Batch File,Replace,Kill Process,String Search,Text Search,我有一个将日志写入acc.txt文件的进程,当在该.txt文件中找到某个字符串时,我正在尝试重新启动该进程。一旦找到字符串并与我要查找的内容匹配,就应该清除acc.txt内容,并且必须终止进程 更新:已修复错误,请参阅下面的解决方案。您可以使用findstr和taskkill命令,例如: @echo off pushd %~dp0 :loop find "Error8902" acc.txt >nul 2>&1 && goto :stringFound

我有一个将日志写入
acc.txt
文件的进程,当在该
.txt
文件中找到某个字符串时,我正在尝试重新启动该进程。一旦找到字符串并与我要查找的内容匹配,就应该清除
acc.txt
内容,并且必须终止进程


更新:已修复错误,请参阅下面的解决方案。

您可以使用
findstr
taskkill
命令,例如:

@echo off
pushd %~dp0

:loop
   find "Error8902" acc.txt >nul 2>&1 && goto :stringFound
   echo String not found
   timeout /nobreak 1 >nul      & :: Interval between scanning
goto :loop


:stringFound
   echo String found, killing process
   taskkill /f /t /im process.exe
   del /F acc.txt
   pause

这不是一个问题,而是一个任务请求。请提供您尝试过的代码,并描述您遇到的问题。请参阅此帮助主题:!似乎我只收到一条
字符串未找到
消息,尽管Error8902文本确实存在于acc.txt文件中。我将其替换为:find“Error8902”acc.txt>nul 2>&1&&goto:stringFound,现在似乎可以工作了,问题是acc.txt内容完好无损,没有被删除。同时,以管理员身份运行批处理脚本似乎不会返回字符串found@Chris,因为以管理员身份运行批处理文件会将工作目录设置为System32目录。您需要删除/F选项。/F选项用于文件列表。他只需要解析文件acc.txt.Oh,对了。完全忘了这部分,谢谢。因此,使用line
find“Error8902”acc.txt>nul2>&1&&goto:stringFound
将使脚本符合预期,问题是
acc.txt
内容是完整的,不会被删除。有什么想法吗?