首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务的Windows批处理文件

服务的Windows批处理文件
EN

Stack Overflow用户
提问于 2015-01-23 09:29:42
回答 1查看 41关注 0票数 0

因此,这个文件应该检查两个服务的状态,如果发现它们没有运行,就启动它们。它在第一个服务上工作得很好,但是如何让它在多个服务上工作呢?此外,我还希望能够在启动后执行状态检查。请让我知道你的想法。

代码语言:javascript
复制
net start | find "spooler" > nul 2>&1
if not .%errorlevel%.==.0. goto spoolersvc
goto nextSvc

:nextSvc
net start | find "BITS" > nul 2>&1
if not .%errorlevel%.==.0. goto BITSsvc
goto quit

:spoolersvc
net start "spooler"
echo spooler Service restarted at %TIME::=-% on %DATE:/=-% >> C:\scripts\isa\logs\spooler.log
echo

:BITSsvc
net start "BITS" 
echo Microsoft BITS Service restarted at %TIME::=-% on %DATE:/=-% >> C:\scripts\isa\logs\BITS.log
echo

:quit
exit
EN

回答 1

Stack Overflow用户

发布于 2015-01-23 09:47:33

您需要的是一个使用call的批处理文件子例程。一旦您调用子例程,您可以跳到文件的末尾,批处理填充将从它停止的地方开始。这样,您就可以编写一个批处理文件,允许您监视和启动任意数量的服务。

代码语言:javascript
复制
set LOG_FILE=C:\scripts\isa\logs\spooler.log

call :CheckService spooler
call :CheckService BITS
goto :EOF

:CheckService
set SERVICE_NAME=%1

net start | find "%SERVICE_NAME%" > nul 2>&1
if not .%errorlevel%.==.0. goto :EOF

net start "%SERVICE_NAME%"
echo %SERVICE_NAME% Service restarted at %TIME::=-% on %DATE:/=-% >> %LOG_FILE%

net start | find "%SERVICE_NAME%" > nul 2>&1
if .%errorlevel%.==.0. (
    %SERVICE_NAME% Service started successfully at %TIME::=-% on %DATE:/=-% >> %LOG_FILE%
) else (
    %SERVICE_NAME% Service failed to start at %TIME::=-% on %DATE:/=-% >> %LOG_FILE%
)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28101649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档