批处理或VBS检查服务是否启动

服务器上有几个服务虽然是设的自动,但是不能随系统自动启动。现在想写个批处理,能检查该服务是否已启动,若没有启动就把它启动,若已启动就不处理。要能自己修改检查时间;要是用批... 服务器上有几个服务虽然是设的自动,但是不能随系统自动启动。现在想写个批处理,能检查该服务是否已启动,若没有启动就把它启动,若已启动就不处理。要能自己修改检查时间;要是用批处理能不显示黑框最好。服务名称1:ndclient服务名称2:netdetective
这几个是上海垃圾与人公司的垃圾收费软件的垃圾服务。
三楼的高手,我在自己的XP上运行了一下你写的(我的电脑没有那几个垃圾服务),我看了一下进程,find.exe cmd.exe出现好多,加我自己系统的14个进程共计301个。CPU占用100%,内存使用加系统占用80兆的共计789兆。当然只是5秒左右。o(∩_∩)o...哈哈
二楼的高手,我用你的vbs提示o.run batfile,0 这句错误。可能是我的错,麻烦在看一下。
展开
 我来答
爱笑死人了
2009-03-02 · TA获得超过1296个赞
知道小有建树答主
回答量:657
采纳率:50%
帮助的人:280万
展开全部
如果是2000,可以到XP下%windir%\system32\拷贝sc.exe过去,如果是2003即自带了.
sc query ndclient 即可查询ndclient服务的状态,如果state:1 STOPED即表示处于停止状态。

如下面的批处理检测w32time服务是否停止,如果乎答停止状态,尝试启动它:
@echo off
rem 批处理,检测w32time服务
sc query w32time | find "STATE" >c:\servstat.txt
set myServStat=-1
for /f "tokens=2,3*" %%a in (c:\servstat.txt) do set myServStat=%%c
if "%myServStat%"=="STOPED" goto startServ
goto :EOF
:startServ
net start w32time

上面的批处理把w32time改成你需要的服务名,或者以%1代替来使用参数,但运行过程会有黑框出现,这可以用VBS来解决。比如上桐顷哗面的批处理保存为c:\chkserv.bat,这个的VBS就行了:

'VBS脚本,定时运行一下c:\chkserv.bat
batfile="c:\chkserv.bat"
do while true
set o=createobject("WScript.Shell")
'下面第二个参数为0即隐藏运行窗口,1显显示运行窗口
'测试时可先以1为参数看运行情况局行
o.run batfile,0
set o=nothing
WScript.Sleep 10*60*60 '10分钟后再检测
loop
专杀主宫
2012-11-29
知道答主
回答量:63
采纳率:100%
帮助的人:11.6万
展开全部
第三行 “=”后面少了个对象,随便Dim mm 然后把mm添加到“=”后面 记得MM后面加点哦
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BB石俊杰
2009-03-04 · TA获得超过1507个赞
知道大有可为答主
回答量:1395
采纳率:0%
帮助的人:1368万
展开全部
::最简单的方法
::原理,同名服务只可以开一个一次,所以你不管他是否启动都运行亏族启动命令就可以了。
@echo off
net start ndclient
net start netdetective

如真要判断的话就这样
@echo off
::查看已经启动的服务是否有你要查的内容,查找不到销凳弊粗禅运行后面的命令。
net start|find "ndclient"||net start ndclient
net start|find "netdetective"||net start netdetective
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tooyan
2009-03-02 · 超过14用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:0
展开全部
纯vbs我不会
但猛纯拿2合1的变种我还是能做出来的:

p的:

for /f "tokens=4" %%i in ('sc query ndclient^|find /i "state"') do (if "%%i"=="STOPPED" net start ndclient)
for /f "tokens=4" %%i in ('裤脊sc query netdetective^|find /i "state"') do (if "%%i"=="STOPPED" net start netdetective)

把上面内容复制保存为 sc.bat 然后另外使用

set ws=createobject("wscript.shell")
ws.run "sc.bat",vbhide
wscript.quit

上面三行保存为 sc.vbs 放在与 sc.bat 相同文件夹中就可以了
运行 sc.vbs 即可

顺便问问 ndclient这两个服务是不枝搭是 iis的? 我很想知道我什么时候好像在哪见过?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
linlin2178
2009-03-05 · TA获得超过2164个赞
知道小有建树答主
回答量:748
采纳率:100%
帮助的人:447万
展开全部
::在批处理态老最前面加上以下的代码可以使窗口一闪而过,要完全不显示还做不到
::楼上 BB石俊昌闭棚杰 的方法我觉得很好,可以采纳
@echo off
::::::::::::::::隐藏cmd窗口:::::::::::::::::::::
if "%1" neq "1" (
>"%temp%\tmp.vbs" echo set WshShell = WScript.CreateObject^(^"耐则WScript.Shell^"^)
>>"%temp%\tmp.vbs" echo WshShell.Run chr^(34^) ^& %0 ^& chr^(34^) ^& ^" 1^",0
start /d "%temp%" tmp.vbs
exit)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式