使用findstr停止/启动Windows服务

时间:2014-11-27 11:42:33

标签: service findstr

我需要在.txt文件中满足某些参数时停止并启动服务。

当我的应用程序无法连接到我们的测试环境中的数据库(常规出现)时,它会在服务器文件夹中生成以下文件类型(文件日期随每次出现而变化)

自检-20141126181000-RED.txt

在此文件中是短语

RED:服务器无法启动:无法打开数据库:无法连接到数据库

每次生成此短语时,我都需要停止并启动特定服务。

我从未使用过findstr命令,但我认为它在这里很有用。文本文件显然需要通配符,我希望生成带有数据和时间服务的结果文件已停止并启动。 以下是否有效?

findstr "RED: Server failed to start: Unable to open database: Unable to connect to database” *RED.txt
if %errorlevel%==0 (
sc stop "my service"
sc start "my service"
echo %DATE% %TIME% database >> results.txt
)

计划是每30分钟左右运行一次计划任务

1 个答案:

答案 0 :(得分:0)

嗯,显然,一旦你有一个这样的文件,你的脚本将继续找到它并每30分钟重新启动一次服务。您需要删除或移动RED文件。

第二个问题是sc start命令可能在服务仍然停止时失败 - sc stop在请求发送后立即返回,并且不等待。您需要重复sc query "ServiceName" | find "RUNNING"检查。当服务仍在运行时,通过运行ping -n 2 127.0.0.1 > nul给它一些时间。忙碌等待并不好,但是没有干净的sleep命令,所以ping是常见的黑客攻击。