无忧启动论坛

标题: 自动重启批处理求助 [打印本页]

作者: freesoft00    时间: 2010-6-14 11:16
标题: 自动重启批处理求助
悲哀,不用的时候老见到,用的时候老也找不到。
想实现电脑开机运行后2个小时自动从新启动电脑。这个如何实现。


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



还有没有其它方法?

以前看到段代码是用at命令来实现的,忘记了。
作者: freesoft00    时间: 2010-6-14 11:17
外加第三方程序也可以。
作者: freesoft00    时间: 2010-6-14 13:13
上面的shutdown不行,运行后弹出倒计时的窗口成了当前窗口,而我这里还要有其它前台显示的监控画面,它给挡住了。这个如何解决,这个倒计时窗口能不能不弹出来或者最小化。

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

[ 本帖最后由 freesoft00 于 2010-6-14 14:51 编辑 ]
作者: 网虫2008    时间: 2010-6-14 15:18
原帖由 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 编辑 ]
作者: freesoft00    时间: 2010-6-14 16:08
恩,确实可以。没有想到用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 编辑 ]
作者: 网虫2008    时间: 2010-6-14 16:21
原帖由 freesoft00 于 2010-6-14 16:08 发表
恩,确实可以。没有想到用pecmd。
另外没有看帮助,直接wait 12 (为了少等点时间看效果)直接悲剧了,反复重启,看帮助才知道是毫秒级别的。
另外,建立快捷方式 C:\Downloads\PECMD.EXE LOAD \down\PECMD.I ...


直接在 PECMD.INI 最后加上

LOAD XX.INI  不应该出现黑框呀??
作者: freesoft00    时间: 2010-6-14 17:46
恩,确实没有黑框,我的印象中也是不应该有的,可能是残留的bat文件的黑框。
另外,这个问题变了,不是2小时从新启动一次电脑,是两个小时关闭1个程序,然后再启动它。
因为这个程序没有加密狗,只能运行两个小时。
作者: dos时代菜鸟    时间: 2010-6-14 17:59
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 编辑 ]
作者: freesoft00    时间: 2010-6-14 20:07
恩,不错,谢谢了。
两个小时关闭一样程序,然后再启动它,循环这样下去不停。
@echo off
:lock
start 要启动的程序
ping /n 7200 127.1 >nul
taskkill /f /im 进程名
goto lock

这样就可以了吧。时间延迟还有其它更好的或者代码还有其它改进的地方没有
作者: dos时代菜鸟    时间: 2010-6-15 07:22
原来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 编辑 ]
作者: freesoft00    时间: 2010-6-15 12:38
谢谢了!这个是当时朋友没有说清,说要2小时从起,我以为从起电脑,正好了,他说要重启程序。不过没有关系,多学点东西。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3