中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » [求助][DOS]纯DOS下如何判断时间?
作者:
标题: [求助][DOS]纯DOS下如何判断时间? 上一主题 | 下一主题
lihkk
新手上路





积分 11
发帖 7
注册 2008-10-8
状态 离线
『楼 主』:  [求助][DOS]纯DOS下如何判断时间?

如题,如果当前时间晚于特定时间段即执行某一命令。
例:若当前系统时间晚于9:00p即令系统关机。
请较大虾如何实现?
多谢!

2008-11-28 12:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wangff
初级用户





积分 134
发帖 54
注册 2008-11-19
状态 离线
『第 2 楼』:  


@echo off
:loop
set t=%time: =0%
if "07:00"=="%t:~0,5%" echo %t%
ping -n 2 127.1>nul
goto loop
将echo %t%换成关机

2008-11-28 14:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sea1112
初级用户





积分 131
发帖 119
注册 2007-6-12
来自 gz
状态 离线
『第 3 楼』:  



  Quote:
Originally posted by lihkk at 2008-11-28 12:06 PM:
如题,如果当前时间晚于特定时间段即执行某一命令。
例:若当前系统时间晚于9:00p即令系统关机。
请较大虾如何实现?
多谢!

方法一:

at /?
shutdown /?
两命令结合完成

方法二:
不停看时间,时间一到就运行。
注:cpu 使用会好高的,不好。
@echo off
:s
if "%time:~0,5%"=="9:00" 关机命令
ping -n 2 127.1>nul
goto s

2008-11-28 14:56
查看资料  发送邮件  发短消息 网志  OICQ (24278528)  编辑帖子  回复  引用回复
yishanju
银牌会员

[b]看你妹啊[/b]


积分 1488
发帖 1357
注册 2006-5-20
状态 离线
『第 4 楼』:  

人家楼主说的是纯DOS




有问题请发论坛或者自行搜索,再短消息问我的统统是SB
2008-11-28 15:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sea1112
初级用户





积分 131
发帖 119
注册 2007-6-12
来自 gz
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by yishanju at 2008-11-28 03:04 PM:
人家楼主说的是纯DOS

晕,这样这台机不就只做一件事情吗,“等关机电脑”

我想不是说真的纯DOS吧,纯DOS用不到等关机的命令吧。

[ Last edited by sea1112 on 2008-11-28 at 17:36 ]

2008-11-28 17:34
查看资料  发送邮件  发短消息 网志  OICQ (24278528)  编辑帖子  回复  引用回复
lihkk
新手上路





积分 11
发帖 7
注册 2008-10-8
状态 离线
『第 6 楼』:  

的确,需求是纯DOS下。
关机 —— 已找到适用的命令fdapm.com
定时 —— 看到有很多类似的求助贴,皆没有正解。

找到一个与定时相关的,但又搞不懂:
http://www.moon-soft.com/program/bbs/readelite1850.htm

或者请教大虾,纯DOS下如何判断时间大小?
例: 如果 %当前时间% 小于(或大于) %指定时间% 则 执行xxxxxx

2008-11-28 18:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 7 楼』:  



  Quote:
Originally posted by sea1112 at 2008-11-28 17:34:

晕,这样这台机不就只做一件事情吗,“等关机电脑”

我想不是说真的纯DOS吧,纯DOS用不到等关机的命令吧。

[ Last edited by sea1112 on 2008-11-28 at 17:36 ]

为什么不可以是真的纯DOS?那么什么是假的纯DOS?本来加个纯字就多此一举,请问什么是不纯的 DOS ?或者请告诉我纯 Windows 和不纯 Windows 的区别。人家已经写明了纯 DOS ,请问还要怎么“纯”?



DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2008-11-28 20:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 8 楼』:  

回正题:
PC Tools 9.0 中有个 SCHEDULE 可以在计划的时间中执行所设定的任务,不过在运行前先要运行 CPTASK 。Windows 中的计划任务我估计就是从它那里学来的。



DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2008-11-28 20:21
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 9 楼』:  

即使写了“纯dos”,有人还是理解成cmd,
看来加个“纯”字,尽管不科学,不准确,但很有必要,呵呵。



Windows 一键还原
http://www.yjhy.com
2008-11-28 20:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 10 楼』:  

呵呵,这事就和方便面广告一样:
“本品不含防腐剂”
“本品绝不含防腐剂”
“本品100%不含防腐剂”
“本品100%保证不含防腐剂”
请问到底哪个才是真的不含防腐剂?

越是过多的强调就越是说明心虚,有就有,没有就没有;是就是,不是就不是。

假如某企业委托某软件公司开发 DOS 下的软件,但某软件公司理解成 Windows 命令行下执行的软件了,做了半天总算做出来了,但对不起,我不付钱,因为我已经说明了是 DOS 下的软件。
概念不清,审题不清,做再多的事也是无用功。



DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2008-11-29 16:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 11 楼』:  

DOS是一个单用户单任务的操作系统,基本上不存在并行运行这种事儿,象楼主这种要求,似乎只有两个途径:

1、专门运行一个程序来判断当前时间,符合要求就去执行相应的操作,例如关机。

2、编写专门的内存驻留程序,截取时钟中断处理程序,然后再进行时间判断,根本判断结果执行类似的操作。



偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-11-30 13:57
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
goli2008
中级用户





积分 252
发帖 97
注册 2006-9-17
状态 离线
『第 12 楼』:  

这个有什么难??

1、DOS下有个time命令,可取当前时间
2、写个BAT处理,定时如(10秒)判断一回时间,时间就关机,不就完了?
3、dos下的时钟、关机程序也很多,搜搜吧

2008-11-30 22:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 13 楼』:  



  Quote:
Originally posted by DOSforever at 2008-11-29 16:41:
假如某企业委托某软件公司开发 DOS 下的软件,但某软件公司理解成 Windows 命令行下执行的软件了,做了半天总算做出来了,但对不起,我不付钱,因为我已经说明了是 DOS 下的软件。
概念不清,审题不清,做再多的事也是无用功。  

如此说来,中国dos联盟的论坛里,里面绝大多数话题都是名不副实的。因此,加上必要的强调,很有必要,呵呵。

再说了,签了合同,就要做打官司的准备。发帖子有几个是按合同要求的?呵呵。



Windows 一键还原
http://www.yjhy.com
2008-12-4 09:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 14 楼』:  

合同只是比喻,越是强调就越是心虚,别人名不副实是别人的事,我们不能跟着不正常的人跑,什么是正确和错误自己要有主心骨。所以没有必要强调,他们不能正确理解那是他们的事情。



DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2008-12-4 12:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
winson4829
初级用户





积分 58
发帖 17
注册 2008-3-2
状态 离线
『第 15 楼』:  

寫一個 TSR 程式, 常駐你的工作程式, TSR 的程式其實是很簡單的, 以 TCC 或 BC 程式碼如下:
此 TSR 省略了很多安全呼叫的程序碼(例如DTA and PSP的保留及回復,及inDosFlag 和 CriticalFlag 的判斷, 及中斷程序的不可重覆進入限定) , 不過在此應該不會有影响
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dos.h>
#include <io.h>
#include <bios.h>
#include <fcntl.h>

static void interrupt (*OldInt8)(void);
static void interrupt NewInt8(WORD bp,WORD di,WORD si,WORD ds,WORD es,WORD dx,WORD cx,WORD bx,WORD ax);

static void interrupt NewInt8(WORD bp,WORD di,WORD si,WORD ds,WORD es,WORD dx,WORD cx,WORD bx,WORD ax)
{
    if(OldInt8!=NULL) OldInt8();
   
    // 你的判斷程序寫在這裡 ....
    // 1. 取得時間
    // 2. 時間到了嗎
    // 3. 執行關機
}

int main(int argc, char *argv[])
{
    struct SREGS    sregs;
    union  REGS     regs;
    unsigned short  u16;

    // 本程式所需空間
    u16 = *(unsigned far*)MK_FP(_psp-1, 3) + 16;

    // 計時器中斷每秒會被呼叫 18.2 次
    OldInt8 =getvect(0x08);     // Store 0x08 VECTOR
    setvect(0x08,NewInt8);      // install new ISR
   
    keep(0, u16);               // 常駐在記憶體
    return(1);
}


2008-12-6 00:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: