[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 请问如何用批处理判断一个服务的状态?

我的计算机上的默认的只开了很少的服务

有些服务不常用,所以就没有开,

我现在就是想做一个批处理 达到这样的效果:

我运行这个批处理,如果查到此服务是停止的就开启此服务;

如果这个批处理检测到这个服务是开启的就停止此服务

谢谢各位了

  查询服务状态用 sc query ,开启服务用 sc start ,停止服务用 sc stop ;问题的关键有两点:一是需要知道这些服务的具体名称;二是需要提取 sc query 运行后的有效数据。第一点需要楼主自行解决,第二点可以通过 for 来提取 sc query 运行后 state 所在行的信息。更详细的内容,请在命令行窗口中通过 sc /? 查询,或者在 开始--运行 中运行
hh ntcmds.chm::ntcmds.htm,然后,在打开的帮助文件中找到 sc  的帮助信息。

TOP

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感觉很爽.

TOP

  看了资料马上就能写出批处理代码来,不错不错^_^

  帮你精简一下:
  1. @echo off
  2. echo %date%>data.txt
  3. echo 2008-04-01|date
  4. sc start MSSQLSERVER&&for /f %%i in (data.txt) do (echo %%i|date)
复制代码
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

原帖由 namejm 于 2008-4-27 08:56 发表
  查询服务状态用 sc query ,开启服务用 sc start ,停止服务用 sc stop ;问题的关键有两点:一是需要知道这些服务的具体名称;二是需要提取 sc query 运行后的有效数据。第一点需要楼主自行解决,第二点可以通过 ...


谢谢你的回答,可是我不会通过for来获得state的数据

假如我的服务是messenger,您能帮我写个这样的代码吗?

TOP

  代码如下:
  1. @echo off
  2. for /f "tokens=4" %%i in ('sc query messenger^|findstr /i "state.*:"') do (
  3.     if /i "%%i"=="stopped" (
  4.         sc start messenger
  5.     ) else sc stop messenger
  6. )
  7. pause
复制代码
  注意查看是否有出错信息。在我的电脑上没有成功开启,估计是精简版的原因。
尺有所短寸有所长,学好批处理没商量;
考虑问题复杂化,解决问题简洁化。

心在天山,身老沧州。

TOP

还有一点建议:
sc start未必能够启动停止的服务(因为有些服务是禁止自动启动的,这个时候可能先要用到sc config...

TOP

我试着写下去....
一天天学习,一天天进步.

TOP

返回列表