【问题标题】:Windows batch file for services服务的 Windows 批处理文件
【发布时间】:2015-01-23 01:29:41
【问题描述】:

所以,这个文件应该检查​​ 2 个服务的状态,如果发现它们没有运行,就启动它们。它适用于第一个服务,但我如何使它适用于多个服务?另外,我希望能够在它启动后执行状态检查。请让我知道你的想法。

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

【问题讨论】:

    标签: windows batch-file monitoring


    【解决方案1】:

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

    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%
    )
    

    【讨论】:

    • 谢谢@shf301。我尝试执行脚本,但它没有启动服务。请你再检查一次,让我知道我可能遗漏了什么吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2018-07-25
    相关资源
    最近更新 更多