中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于时间段控制服务的困惑~~谢谢高手指点
« [1] [2] [3] »
作者:
标题: 关于时间段控制服务的困惑~~谢谢高手指点 上一主题 | 下一主题
boyhong
初级用户





积分 32
发帖 15
注册 2007-4-26
状态 离线
『第 16 楼』:  

楼上的flyinspace大哥。

能不能解答一下:
set /a at=%time:~0,2%,1/(a/8),1/(16/a)&&net start service||net stop
servic
的含义呢。。

那个a,是。。。。我刚拿才试了一下。提示:

以零为除数的错误。

谢谢啦

[ Last edited by boyhong on 2007-4-26 at 07:09 PM ]

2007-4-27 08:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 17 楼』:  

to:vkill
应该是笔误;
应该是at不是a

2007-4-27 08:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 18 楼』:  

不知道lz在 8:30 分或者17:30分的时候是想停止服务还是开启服务??

这涉及到数字的问题;

大于等于 17点停止服务还是 大于17点停止;

大于等于8:00开启还是 大于8点开启

2007-4-27 08:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
boyhong
初级用户





积分 32
发帖 15
注册 2007-4-26
状态 离线
『第 19 楼』:  

TO:版主大哥
      保持8:00——17:00这组服务正常运行,其它时间停止这组服务..
但脚本不能关闭,要循环,每天都在自动保持我的这个对这组特定服务的自动启停.

用wscript.sleep来休眠实现循环真是个好主意。

可上下边那个看不太懂。
set /a at=%time:~0,2%,1/(at/8),1/(16/at)&&

[ Last edited by boyhong on 2007-4-26 at 07:29 PM ]

2007-4-27 08:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 20 楼』:  

用flyinspace的这段代码;其中已经改了;
注意是at而不是a;
而且 他 给的延迟时间也太夸张了
60000秒??16个小时丫;
600秒差不多
注意把自己想要控制的service改好名称

  Quote:
@echo off
echo wscript.sleep 600>delay.vbs
:continue
      set /a at=%time:~0,2%,1/(at/8),1/(16/at)&&net start service||net stop service
      cscript /nologo delay.vbs
goto continue

建议做成系统服务;
避免了这个脚本因为一直开着可能会被人误关;而且一天天的有个窗口开着(即使是最小化)也是不雅观的;
而且下次重启还得双击;
不如做成自启动的系统服务;一切就都不用管了;

[ Last edited by bjsh on 2007-4-26 at 07:35 PM ]

2007-4-27 08:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 21 楼』:  

set /a at=%time:~0,2%,1/(at/8),1/(16/at)&&net start service||net stop service


这句话的是利用了 set /a的连续赋值特性;

当at在 8:00---17:00之外时;就会造成 除数为零的错误;
errorlevel为9169
因此程序执行||后面的停止服务语句;
当处于这段时间时;结果一般为1;errorlevel为0
于是执行 && 后的开启服务语句;

加上循环和延迟 定时检查时间 判断;就达到了你要的效果;

再说一次;强烈建议做成系统服务;于是就算"完美"了

2007-4-27 08:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
boyhong
初级用户





积分 32
发帖 15
注册 2007-4-26
状态 离线
『第 22 楼』:  

我刚才去看,set /?了~~HELP文件里对这几个符号的解释太粗了点。。。

谢谢~~在班班的帮助下看懂了~~

做成系统服务////不知怎么做。。。再次麻烦班班出手一下~~谢谢啦

现在成如下了。谢谢

@echo off
echo wscript.sleep 600>delay.vbs
: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
      cscript /nologo delay.vbs
goto continue

[ Last edited by boyhong on 2007-4-26 at 07:40 PM ]

2007-4-27 08:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 23 楼』:  

做成系统服务看这里:

http://www.cn-dos.net/forum/view ... ;highlight=runassrv

[ Last edited by bjsh on 2007-4-26 at 07:58 PM ]

2007-4-27 08:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 24 楼』:  

你上面的代码有错;应该为:

@echo off
echo wscript.sleep 600>delay.vbs
: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)
      cscript /nologo delay.vbs
goto continue

[ Last edited by bjsh on 2007-4-26 at 08:51 PM ]

2007-4-27 08:44
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
boyhong
初级用户





积分 32
发帖 15
注册 2007-4-26
状态 离线
『第 25 楼』:  

谢谢~~我弄好了~~

如下:

sc create 服务名 binPath= 路径  [选项1] [选项2]

2007-4-27 08:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
boyhong
初级用户





积分 32
发帖 15
注册 2007-4-26
状态 离线
『第 26 楼』:  

最后关于今天大家对我的帮助,感谢flyinspace大哥的思路,及各位对我的贴子的关注,尤其是bjsh版主手把手~~真诚感谢~~

关于用于实际后的情况,大家得等我用上四五天,然后再回来反馈。

再次感谢。

[ Last edited by boyhong on 2007-4-26 at 08:04 PM ]

2007-4-27 09:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 27 楼』:  

sc create 似乎对批处理不大支持;
反正在我的机器上是启动不起来;

正在试 runassrv

2007-4-27 09:07
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
boyhong
初级用户





积分 32
发帖 15
注册 2007-4-26
状态 离线
『第 28 楼』:  

我的电脑是XP2,可以起来。这个脚本最终是用在另一台WIN2000电脑上的。我现在就去看看。。

2007-4-27 09:10
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bjsh
银牌会员





积分 2000
发帖 621
注册 2007-1-1
状态 离线
『第 29 楼』:  

等下吧;
我刚才试了;
很浪费资源的;我服务起来居然占到50%以上;
把那段延迟去掉;基本就不占资源了;

干脆用这个吧;

  Quote:
@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 60 127.1
goto continue

把他做服务吧;测试不占系统资源;
不过如果去掉了ping -n 60 127.1 占用就几乎100%

[ Last edited by bjsh on 2007-4-26 at 08:45 PM ]

2007-4-27 09:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
boyhong
初级用户





积分 32
发帖 15
注册 2007-4-26
状态 离线
『第 30 楼』:  

~~我正在为占用的CPU发愁~~

用ping -n 60 127.1确实缓解了~~

不过那段代码好像有问题,正在试...

试得差不多了~~
确实有些问题。现在时间:20:31
按照脚本来说,应是关闭服务的,,可是看到执行的情况是:

开启服务然后又关闭服务。然后开始延时,又开始先开服务,再停服务。就这样循环。

[ Last edited by boyhong on 2007-4-26 at 08:49 PM ]

2007-4-27 09:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: