Board logo

标题: [系统相关] 批处理中能不能给一个命令设置超时间? [打印本页]

作者: fzlqq    时间: 2009-6-16 10:35     标题: 批处理中能不能给一个命令设置超时间?

我现在有个需求是
一个bat文件里面有一条命令,我需要它最多执行15分钟,如果15分钟还没执行完我就执行下面的命令。有人会吗,求教了
作者: Taurus    时间: 2009-6-16 11:30

原帖由 fzlqq 于 2009-6-16 10:35 发表
我现在有个需求是
一个bat文件里面有一条命令,我需要它最多执行15分钟,如果15分钟还没执行完我就执行下面的命令。有人会吗,求教了

写了个对比时间差的,不是用在中断执行,但修改一下应该用得了
主要是:
结束时间-(一天总秒数-开始时间)
=余秒为两个时间的差值

@echo off
:1
set "∞=﹨" &call :∞
::============================================================
::↓↓↓↓↓↓↓↓↓↓↓↓↓TEXT↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
cls
@echo 计时...
pause>nul
::↑↑↑↑↑↑↑↑↑↑↑↑↑TEXT↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
::============================================================
set "∞=∕"
:∞
if not defined %time:~0,1% ( set time2=0%time:~1,1% &if defined %time:~0,1% set time2=%time2:~0,2% )
if %time2:~0,1%==0 (set /a %∞%Y=%time2:~1,1%*3600) else (set /a %∞%Y=%time2:~0,2% *3600)
if %time:~3,1%==0 (set /a %∞%M=%time:~4,1%*60) else (set /a %∞%M=%time:~3,2%*60)
if %time:~6,1%==0 (set %∞%N=%time:~7,1%) else (set %∞%N=%time:~6,2%)
if %time:~9,1%==0 (set %∞%NN=%time:~10,1%) else (set %∞%NN=%time:~9,2%)
if not %∞%==∕ (goto :eof)
set /a ﹨﹨=(86400-%﹨Y%-%﹨M%-%﹨N%)-(86400-%∕Y%-%∕M%-%∕N%)&set /a ∕∕=(100-%﹨NN%)+%∕NN%
if 99 leq %∕∕% if %﹨﹨% GEQ 1 ( set /a ∕∕-=100 && set /a ﹨﹨+=1 ) else ( set /a ∕∕=%∕NN%-%﹨NN% )
cls&echo %﹨﹨%.%∕∕% s&pause>nul
goto :1

[ 本帖最后由 Taurus 于 2009-6-16 11:43 编辑 ]
作者: fzlqq    时间: 2009-6-16 12:45

有点复杂了,没有简单的命令吗
作者: keen    时间: 2009-6-16 13:31     标题: 回复 3楼 的帖子

参看延迟方法总结:
http://www.bathome.net/viewthrea ... hlight=%D1%D3%B3%D9

以后切忌,有问题请首先用本论坛的搜索功能!
作者: Taurus    时间: 2009-6-16 14:40

原帖由 fzlqq 于 2009-6-16 12:45 发表
有点复杂了,没有简单的命令吗

代码应有简化空间;
但如要在一个bat script内做,要准确的话,思路除了对比开始 & 结束 时间,就应该没有了
如果用ping for 等延迟,十五分钟准确度可能会偏差数分钟吧...
作者: caruko    时间: 2009-12-2 15:08

不至于吧..
楼主说的好象是15 分钟后中断执行,因此不需要精确计时
随便一个有延迟的命令都可以做到
只要每隔几秒对比一下时间,是不是已经达到15分钟了..
或者调用at命令,时间到了taskkill




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2