我怎么能脚本一个蝙蝠或cmd停止和启动一个服务可靠的错误检查(或让我知道它不成功的原因)?
当前回答
我只是使用上面Jonas的例子,创建了一个完整的0到24个错误级别的列表。另一篇文章是正确的,网络启动和网络停止只使用errorlevel 0表示成功,2表示失败。
但这对我来说很管用:
net stop postgresql-9.1
if %errorlevel% == 2 echo Access Denied - Could not stop service
if %errorlevel% == 0 echo Service stopped successfully
echo Errorlevel: %errorlevel%
将停止改为开始并反向工作。
其他回答
您可以使用NET START命令,然后检查ERRORLEVEL环境变量,例如。
net start [your service]
if %errorlevel% == 2 echo Could not start service.
if %errorlevel% == 0 echo Service started successfully.
echo Errorlevel: %errorlevel%
免责声明:这是我从脑子里写出来的,但我认为它会起作用。
或者您可以使用以下CMD启动远程服务:sc \\<computer> start <service>
有时你会发现停不动。
我的SQlServer有时会这样做。使用下面的命令行杀死它。如果你真的真的需要你的剧本来消灭那些不停的东西。作为最后的手段,我会让它这么做
taskkill /pid [pid number] /f
我没有发现上面的答案提供了一个令人满意的解决方案,所以我写了下面的批处理脚本…
:loop
net stop tomcat8
sc query tomcat8 | find "STOPPED"
if errorlevel 1 (
timeout 1
goto loop
)
:loop2
net start tomcat8
sc query tomcat8 | find "RUNNING"
if errorlevel 1 (
timeout 1
goto loop2
)
它一直运行net stop直到服务状态为STOPPED,只有在状态为STOPPED后才运行net start。如果一个服务需要很长时间才能停止,网络停止可能会终止失败。如果由于某种原因,服务没有成功启动,它将继续尝试启动服务,直到状态为RUNNING。
SC可以用服务做任何事情……启动,停止,检查,配置,和更多…
推荐文章
- 在批处理文件中处理子字符串的最佳方法是什么?
- 在Sublime Text 2中使用Ctrl+D进行多个选择时,我如何跳过匹配?
- #定义WIN32_LEAN_AND_MEAN具体排除了什么?
- 如何使用文件的行作为命令的参数?
- 如何添加一个设置路径只执行批处理文件?
- 最好的轻量级web服务器(只有静态内容)的Windows
- npm犯错!错误:EPERM:操作不允许,重命名
- 崇高的文本从命令行
- 如何保持Python脚本输出窗口打开?
- 使用.bat文件检查文件夹是否存在
- BAT文件:打开新的cmd窗口并在其中执行命令
- 如何做一个非贪婪匹配在grep?
- 如何查看Windows库(*.lib)的内容
- 在Windows中删除大文件夹最快的方法是什么?
- 如何在IntelliJ IDEA中输入命令行参数?