![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-25 06:59 |
共 47,813 主题排行 / 349,918 发帖 / 今日 1 篇 / 48,274 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 关于时间段控制服务的困惑~~谢谢高手指点 |
| 可打印版本 2,813 / 43 |
| 第31楼 bjsh | 发表于 2007-04-27 09:51 |
| 银牌会员 发帖 621 积分 2,000 | |
|
是有问题的;如果开启多个服务;应该加括号;
29楼已经改了; |
|
| 第32楼 boyhong | 发表于 2007-04-27 10:05 |
| 初级用户 发帖 15 积分 32 | |
|
现在按照您的意思是:
@echo off :continue set /a at=%time:~0,2%,1/(at/8),1/(16/at)&&(net start 服务1 & net start 服务2 & net start 服务3)||(net stop 服务1 & net stop 服务2 & net stop 服务3) ping -n 300 127.1>nul goto continue 然后做成服务: sc create 服务名 binPath= 路径 [选项1] [选项2] 功能上已经OK了~~ 在资源占用上,刚才看到sleep.exe也可延时,在试,现在试图寻找一种占得最小的东东~~ 试验中.... |
|
| 第33楼 everest79 | 发表于 2007-04-27 12:48 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
用vbscript来延时可以动态计算,这样不是更方便
首先确定两个阀值8&17,然后生成sleep的等待时间为当前时间到阀值的差 |
|
| 第34楼 bjsh | 发表于 2007-04-27 22:23 |
| 银牌会员 发帖 621 积分 2,000 | |
|
to everest79:
前面已经用vbscript做过了; 后来做成服务后;太占资源;才淘汰这种方法的; |
|
| 第35楼 everest79 | 发表于 2007-04-28 01:32 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
光只是宿主挂在后台,只占4M内存
|
|
| 第36楼 bjsh | 发表于 2007-04-28 01:43 |
| 银牌会员 发帖 621 积分 2,000 | |
|
我也觉得奇怪;
但是那样运行后;我的cpu就会因为 cscript 彪到 50% 以上; 也不大清楚原因 |
|
| 第37楼 flyinspace | 发表于 2007-04-28 03:15 |
| 银牌会员 发帖 517 积分 1,206 | |
|
你把延时开得太快了。
wscript.sleep 6000 在实际测试中,只占用了3秒的时间。 我给的延时,在实际计算中,只有30秒的延时。。 这些都是通过计算了的。。 并不是胡乱给的延时结果。 而且在他的应用中,30秒并没有什么关系。。 就是一分钟也在他的接受范围内。 |
|
| 第38楼 bjsh | 发表于 2007-04-28 05:13 |
| 银牌会员 发帖 621 积分 2,000 | |
|
难怪呢;
这样解释就合理了; 不过wscript.sleep不是以秒来计算的吗?' 怎么6000会只占3秒?; |
|
| 第39楼 everest79 | 发表于 2007-04-28 05:14 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
是以毫秒计算的1/1000秒
|
|
| 第40楼 flyinspace | 发表于 2007-04-28 05:37 |
| 银牌会员 发帖 517 积分 1,206 | |
|
嗯。按道理来说是 1/1000的。。
但我通过 :redelay echo %time% cscript /nologo delay goto :redelay 最后得出的结果就是一半。。。 我也不知道为什么? |
|
| 第41楼 bjsh | 发表于 2007-04-28 09:47 |
| 银牌会员 发帖 621 积分 2,000 | |
|
好久没用vbs了;
连sleep是毫秒都忘了; 汗... |
|
| 第42楼 boyhong | 发表于 2007-04-28 20:59 |
| 初级用户 发帖 15 积分 32 | |
|
我暂时是这样做的:
写了两个批处理 一个启的。 一个停的。 然后在计划任务里。。 关于用vbscript来延时,正在试,好像不止占内存,CPU也不行,先观望一下。个人正在测试这些 谢谢各位,有更好的方法请UP啦 |
|
| 第43楼 bjsh | 发表于 2007-04-28 22:51 |
| 银牌会员 发帖 621 积分 2,000 | |
|
前面已经说了 vbs 延时 造成占内存cpu资源;是因为延时过快;
用先前flyinspace兄给你的数值60000就好了; 如果你打算用了计划任务;还用这么费事啊;早搞定了;连延时都不用; 资源耗费为0; @echo off schtasks /create /tn "START" /tr net start service /sc daily /st 08:00:00 schtasks /create /tn "STOP" /tr net stop service /sc daily /st 17:00:00 双击一次搞定.. |
|
| 第44楼 flyinspace | 发表于 2007-04-29 00:25 |
| 银牌会员 发帖 517 积分 1,206 | |
|
给一段 VBS 的脚本。 '************************************************************
' 第一次写 vbs 。写得不好,还请高手指点。。 ' 使用时,把StopServerName = 后面的名称替换自己需要的名称就行了。 ' 脚本误差 +/- 一分钟。 ' 而且也解决了内存占用问题。4M 内存应该影响不大吧? '************************************************************ Dim NHour,NMin,SleepTime Dim RunState strComputer = "." Const StopServerName = "Dnscache" Do Nhour = Hour(Now) Nmin = Minute(Now) SleepTime = ( 60 - NMin ) * 60 * 1000 if Nhour > 8 and Nhour < 17 Then RunState = SetServerState(StopServerName,"Running") Else RunState = SetServerState(StopServerName,"Stopped") End If ‘WScript.Echo "" & SleepTime WScript.Sleep SleepTime Loop Function SetServerState(SName,State) Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery("Select * from Win32_Service",,48) For Each Item in colItems If Item.Name = Sname And Item.State = "Running" Then If Item.State <> State Then Item.StopService() End if ElseIf Item.Name = Sname And Item.State = "Stopped" Then If Item.State <> State Then Item.StartService() End if End if Next End Function [ Last edited by flyinspace on 2007-4-28 at 11:39 AM ] |
|
| 上一页 1 2 3 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |