批处理或VBS检查服务是否启动
服务器上有几个服务虽然是设的自动,但是不能随系统自动启动。现在想写个批处理,能检查该服务是否已启动,若没有启动就把它启动,若已启动就不处理。要能自己修改检查时间;要是用批...
服务器上有几个服务虽然是设的自动,但是不能随系统自动启动。现在想写个批处理,能检查该服务是否已启动,若没有启动就把它启动,若已启动就不处理。要能自己修改检查时间;要是用批处理能不显示黑框最好。服务名称1:ndclient服务名称2:netdetective
这几个是上海垃圾与人公司的垃圾收费软件的垃圾服务。
三楼的高手,我在自己的XP上运行了一下你写的(我的电脑没有那几个垃圾服务),我看了一下进程,find.exe cmd.exe出现好多,加我自己系统的14个进程共计301个。CPU占用100%,内存使用加系统占用80兆的共计789兆。当然只是5秒左右。o(∩_∩)o...哈哈
二楼的高手,我用你的vbs提示o.run batfile,0 这句错误。可能是我的错,麻烦在看一下。 展开
这几个是上海垃圾与人公司的垃圾收费软件的垃圾服务。
三楼的高手,我在自己的XP上运行了一下你写的(我的电脑没有那几个垃圾服务),我看了一下进程,find.exe cmd.exe出现好多,加我自己系统的14个进程共计301个。CPU占用100%,内存使用加系统占用80兆的共计789兆。当然只是5秒左右。o(∩_∩)o...哈哈
二楼的高手,我用你的vbs提示o.run batfile,0 这句错误。可能是我的错,麻烦在看一下。 展开
6个回答
展开全部
如果是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
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
展开全部
第三行 “=”后面少了个对象,随便Dim mm 然后把mm添加到“=”后面 记得MM后面加点哦
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
::最简单的方法
::原理,同名服务只可以开一个一次,所以你不管他是否启动都运行亏族启动命令就可以了。
@echo off
net start ndclient
net start netdetective
如真要判断的话就这样
@echo off
::查看已经启动的服务是否有你要查的内容,查找不到销凳弊粗禅运行后面的命令。
net start|find "ndclient"||net start ndclient
net start|find "netdetective"||net start netdetective
::原理,同名服务只可以开一个一次,所以你不管他是否启动都运行亏族启动命令就可以了。
@echo off
net start ndclient
net start netdetective
如真要判断的话就这样
@echo off
::查看已经启动的服务是否有你要查的内容,查找不到销凳弊粗禅运行后面的命令。
net start|find "ndclient"||net start ndclient
net start|find "netdetective"||net start netdetective
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
纯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的? 我很想知道我什么时候好像在哪见过?
但猛纯拿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的? 我很想知道我什么时候好像在哪见过?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
::在批处理态老最前面加上以下的代码可以使窗口一闪而过,要完全不显示还做不到
::楼上 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)
::楼上 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)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询