无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5726|回复: 10
打印 上一主题 下一主题

自动重启批处理求助

[复制链接]
跳转到指定楼层
1#
发表于 2010-6-14 11:16:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
悲哀,不用的时候老见到,用的时候老也找不到。
想实现电脑开机运行后2个小时自动从新启动电脑。这个如何实现。


  1. shutdown -r -t 7200 -f
复制代码



还有没有其它方法?

以前看到段代码是用at命令来实现的,忘记了。
2#
 楼主| 发表于 2010-6-14 11:17:47 | 只看该作者
外加第三方程序也可以。
回复

使用道具 举报

3#
 楼主| 发表于 2010-6-14 13:13:08 | 只看该作者
上面的shutdown不行,运行后弹出倒计时的窗口成了当前窗口,而我这里还要有其它前台显示的监控画面,它给挡住了。这个如何解决,这个倒计时窗口能不能不弹出来或者最小化。

想到还是用at命令,开机取得当前的时候,设定两个小时后执行shutdown -r -f 这样就行了。
但具体代码如何写?

[ 本帖最后由 freesoft00 于 2010-6-14 14:51 编辑 ]
回复

使用道具 举报

4#
发表于 2010-6-14 15:18:37 | 只看该作者
原帖由 freesoft00 于 2010-6-14 13:13 发表
上面的shutdown不行,运行后弹出倒计时的窗口成了当前窗口,而我这里还要有其它前台显示的监控画面,它给挡住了。这个如何解决,这个倒计时窗口能不能不弹出来或者最小化。

想到还是用at命令,开机取得当前的 ...


试试直接用 PECMD.EXE 的 WAIT ,参数,设置为 WAIT 两小时后 直接用 PECMD 的 SHUT R 重启

写个.INI文件,开机直接 LOAD 这个.INI

WAIT 1200000
SHUT R

[ 本帖最后由 网虫2008 于 2010-6-14 15:21 编辑 ]
回复

使用道具 举报

5#
 楼主| 发表于 2010-6-14 16:08:21 | 只看该作者
恩,确实可以。没有想到用pecmd。
另外没有看帮助,直接wait 12 (为了少等点时间看效果)直接悲剧了,反复重启,看帮助才知道是毫秒级别的。
另外,建立快捷方式 C:\Downloads\PECMD.EXE LOAD \down\PECMD.INI
这样启动后还是有一个dos的嘿嘿的框框,是否可以去掉。



用了个笨办法:
CreateObject("WScript.Shell").Run "cmd /c C:\Downloads\down.bat",0

上面的vbs调用down.bat

down.bat的内容是:pecmd LOAD \down\PECMD.INI

这样没了黑框框,但是感觉有点多余,直接用vbs不熟悉。

[ 本帖最后由 freesoft00 于 2010-6-14 16:13 编辑 ]
回复

使用道具 举报

6#
发表于 2010-6-14 16:21:38 | 只看该作者
原帖由 freesoft00 于 2010-6-14 16:08 发表
恩,确实可以。没有想到用pecmd。
另外没有看帮助,直接wait 12 (为了少等点时间看效果)直接悲剧了,反复重启,看帮助才知道是毫秒级别的。
另外,建立快捷方式 C:\Downloads\PECMD.EXE LOAD \down\PECMD.I ...


直接在 PECMD.INI 最后加上

LOAD XX.INI  不应该出现黑框呀??
回复

使用道具 举报

7#
 楼主| 发表于 2010-6-14 17:46:21 | 只看该作者
恩,确实没有黑框,我的印象中也是不应该有的,可能是残留的bat文件的黑框。
另外,这个问题变了,不是2小时从新启动一次电脑,是两个小时关闭1个程序,然后再启动它。
因为这个程序没有加密狗,只能运行两个小时。
回复

使用道具 举报

8#
发表于 2010-6-14 17:59:31 | 只看该作者
vbs

调用系统dll内部函数实现关机
隔5000毫秒

WScript.Sleep 5000
Set os0=CreateObject("shell.application")
os0.ShutdownWindows


调用 shutdown.exe 重新启动
WScript.Sleep 5000
Set os=CreateObject("wscript.shell")
os.run "shutdown.exe -t 1 -f -r "

[ 本帖最后由 dos时代菜鸟 于 2010-6-14 18:06 编辑 ]
回复

使用道具 举报

9#
 楼主| 发表于 2010-6-14 20:07:37 | 只看该作者
恩,不错,谢谢了。
两个小时关闭一样程序,然后再启动它,循环这样下去不停。
@echo off
:lock
start 要启动的程序
ping /n 7200 127.1 >nul
taskkill /f /im 进程名
goto lock

这样就可以了吧。时间延迟还有其它更好的或者代码还有其它改进的地方没有
回复

使用道具 举报

10#
发表于 2010-6-15 07:22:16 | 只看该作者
原来lz是要循环启动和关闭某一个程序阿。这个早说阿,用vbs 不用第三方软件。
500毫秒循环启动和关闭 记事本程序的vbs举例

p1="notepad.exe"
Set os=CreateObject("wscript.shell")
Set wmi=GetObject("winmgmts:\\.")
do
        os.run p1
        WScript.Sleep 500
        Set p=wmi.execquery("select * from win32_process where name='"&p1&"'")
        For Each p0 In p
              p0.terminate()
        Next
loop

通过 wscript.shell 实现 程序的启动,通过 wmi 实现程序的进程中断。只需要vbs 就可以完成。
个人认为 那个ping 计时方法,对于短时间还可以,如果时间长,就会出现偏离时差现象。

如果非要用cmd 完成,可以实现编辑一个包含 wscript.sleep 7200 命令的vbs 脚本,然后用 start /wait 7200.vbs 的办法实现计时。
比如:
@echo off
echo wscript.sleep 500 >%temp%\500.vbs
:lock
start /b notepad.exe
start /b /wait %temp%\500.vbs
taskkill /f /im "notepad.exe"
goto lock

[ 本帖最后由 dos时代菜鸟 于 2010-6-15 07:42 编辑 ]
回复

使用道具 举报

11#
 楼主| 发表于 2010-6-15 12:38:59 | 只看该作者
谢谢了!这个是当时朋友没有说清,说要2小时从起,我以为从起电脑,正好了,他说要重启程序。不过没有关系,多学点东西。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 10:20

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表