标题: [系统相关] 请问如何用批处理判断一个服务的状态? [打印本页]
作者: hbrs 时间: 2008-4-26 21:07 标题: 请问如何用批处理判断一个服务的状态?
我的计算机上的默认的只开了很少的服务
有些服务不常用,所以就没有开,
我现在就是想做一个批处理 达到这样的效果:
我运行这个批处理,如果查到此服务是停止的就开启此服务;
如果这个批处理检测到这个服务是开启的就停止此服务
谢谢各位了
作者: namejm 时间: 2008-4-27 08:56
查询服务状态用 sc query ,开启服务用 sc start ,停止服务用 sc stop ;问题的关键有两点:一是需要知道这些服务的具体名称;二是需要提取 sc query 运行后的有效数据。第一点需要楼主自行解决,第二点可以通过 for 来提取 sc query 运行后 state 所在行的信息。更详细的内容,请在命令行窗口中通过 sc /? 查询,或者在 开始--运行 中运行
hh ntcmds.chm::ntcmds.htm,然后,在打开的帮助文件中找到 sc 的帮助信息。
作者: xiaoxx 时间: 2008-4-27 10:02
hoho这个有用。
我机器上的sqlserver2k5过期了,不能自动启动。需要用批处理把日期改到4.1号之前,启动服务然后再改回。
原来不知道这个指令,只好弄个cmd始终挂在那里。现在就方便多了。
代码如下:
@echo off
set savedata=%date%
echo %savedata%>data.txt
set p=2008-04-01
echo %p%|date
sc start MSSQLSERVER&for /f %%i in (data.txt) do (echo %%i|date)
oh yeah感觉很爽.
作者: namejm 时间: 2008-4-27 10:26
看了资料马上就能写出批处理代码来,不错不错^_^
帮你精简一下:- @echo off
- echo %date%>data.txt
- echo 2008-04-01|date
- sc start MSSQLSERVER&&for /f %%i in (data.txt) do (echo %%i|date)
复制代码
作者: hbrs 时间: 2008-4-27 11:00
原帖由 namejm 于 2008-4-27 08:56 发表
查询服务状态用 sc query ,开启服务用 sc start ,停止服务用 sc stop ;问题的关键有两点:一是需要知道这些服务的具体名称;二是需要提取 sc query 运行后的有效数据。第一点需要楼主自行解决,第二点可以通过 ...
谢谢你的回答,可是我不会通过for来获得state的数据
假如我的服务是messenger,您能帮我写个这样的代码吗?
作者: namejm 时间: 2008-4-27 11:19
代码如下:- @echo off
- for /f "tokens=4" %%i in ('sc query messenger^|findstr /i "state.*:"') do (
- if /i "%%i"=="stopped" (
- sc start messenger
- ) else sc stop messenger
- )
- pause
复制代码
注意查看是否有出错信息。在我的电脑上没有成功开启,估计是精简版的原因。
作者: youxi01 时间: 2008-4-27 11:21
还有一点建议:
sc start未必能够启动停止的服务(因为有些服务是禁止自动启动的,这个时候可能先要用到sc config...
作者: wjta 时间: 2008-4-27 20:45
我试着写下去....
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |