Jos*_*hua 41 windows-service windows-command-prompt
我有一个批处理脚本,如下所示:
sc stop myservice
sc start myservice
Run Code Online (Sandbox Code Playgroud)
它出错是因为 sc 不会等到服务停止。如何使用脚本重新启动服务?
crb*_*crb 52
发布者希望在尝试重新启动服务之前确保服务已停止。您可以在“sc query”的输出上使用循环,执行如下操作:
:stop
sc stop myservice
rem cause a ~10 second sleep before checking the service state
ping 127.0.0.1 -n 10 -w 1000 > nul
sc query myservice | find /I "STATE" | find "STOPPED"
if errorlevel 1 goto :stop
goto :start
:start
net start | find /i "My Service">nul && goto :start
sc start myservice
Run Code Online (Sandbox Code Playgroud)
Fac*_*tic 25
使用 powershell 非常简单:
PS >Restart-Service MySrvcHere
Run Code Online (Sandbox Code Playgroud)
更好的是,使用显示名称:
PS >Restart-Service -displayname "My Service Name Here"
Run Code Online (Sandbox Code Playgroud)
Get-Help Restart-Service 更多
如果纯粹是为了重启服务,可以使用
Net stop myservice
Net start myservice
Run Code Online (Sandbox Code Playgroud)
但是,如果要访问 sc 的选项,可以使用 start /wait 命令
start /B /WAIT CMD /C "sc stop myservice"
start /B /WAIT CMD /C "sc start myservice"
Run Code Online (Sandbox Code Playgroud)
这种技术是一种更通用的解决方案,可以应用于任何命令。
要安静地重新启动某些要求停止确认的服务(例如,作为服务器服务),您可以将/y添加到停止命令的末尾。
net stop Server /y
net start Server
Run Code Online (Sandbox Code Playgroud)
这将有助于自动执行脚本。
| 归档时间: |
|
| 查看次数: |
236099 次 |
| 最近记录: |