中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-17 07:18
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » [求助][DOS]纯DOS下如何判断时间? 查看 1,884 回复 14
楼 主 [求助][DOS]纯DOS下如何判断时间? 发表于 2008-11-28 12:06 ·  中国 北京 海淀区 电信
新手上路
积分 11
发帖 7
注册 2008-10-08 12:12
UID 127763
性别 男
状态 离线
如题,如果当前时间晚于特定时间段即执行某一命令。
例:若当前系统时间晚于9:00p即令系统关机。
请较大虾如何实现?
多谢!
2 发表于 2008-11-28 14:55 ·  中国 福建 泉州 移动
初级用户
★★
积分 134
发帖 54
注册 2008-11-19 11:47
UID 131429
性别 男
状态 离线
@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%换成关机
3 发表于 2008-11-28 14:56 ·  中国 广东 广州 白云区 电信
初级用户
★★
积分 131
发帖 119
注册 2007-06-12 22:50
UID 91125
性别 男
来自 gz
状态 离线
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
4 发表于 2008-11-28 15:04 ·  中国 北京 鹏博士长城宽带
银牌会员
★★★★
[b]看你妹啊[/b]
积分 1,488
发帖 1,357
注册 2006-05-20 12:00
UID 55770
状态 离线
人家楼主说的是纯DOS

有问题请发论坛或者自行搜索,再短消息问我的统统是SB
5 发表于 2008-11-28 17:34 ·  中国 广东 广州 白云区 电信
初级用户
★★
积分 131
发帖 119
注册 2007-06-12 22:50
UID 91125
性别 男
来自 gz
状态 离线
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 ]
6 发表于 2008-11-28 18:55 ·  中国 北京 海淀区 电信
新手上路
积分 11
发帖 7
注册 2008-10-08 12:12
UID 127763
性别 男
状态 离线
的确,需求是纯DOS下。
关机 —— 已找到适用的命令fdapm.com
定时 —— 看到有很多类似的求助贴,皆没有正解。

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

或者请教大虾,纯DOS下如何判断时间大小?
例: 如果 %当前时间% 小于(或大于) %指定时间% 则 执行xxxxxx
7 发表于 2008-11-28 20:15 ·  中国 上海 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
UID 35785
性别 男
状态 离线
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 ,请问还要怎么“纯”?
8 发表于 2008-11-28 20:21 ·  中国 上海 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
UID 35785
性别 男
状态 离线
回正题:
PC Tools 9.0 中有个 SCHEDULE 可以在计划的时间中执行所设定的任务,不过在运行前先要运行 CPTASK 。Windows 中的计划任务我估计就是从它那里学来的。
9 发表于 2008-11-28 20:39 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
UID 49283
性别 男
状态 离线
即使写了“纯dos”,有人还是理解成cmd,
看来加个“纯”字,尽管不科学,不准确,但很有必要,呵呵。
Windows 一键还原
http://www.yjhy.com
10 发表于 2008-11-29 16:41 ·  中国 上海 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
UID 35785
性别 男
状态 离线
呵呵,这事就和方便面广告一样:
“本品不含防腐剂”
“本品绝不含防腐剂”
“本品100%不含防腐剂”
“本品100%保证不含防腐剂”
请问到底哪个才是真的不含防腐剂?

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

假如某企业委托某软件公司开发 DOS 下的软件,但某软件公司理解成 Windows 命令行下执行的软件了,做了半天总算做出来了,但对不起,我不付钱,因为我已经说明了是 DOS 下的软件。
概念不清,审题不清,做再多的事也是无用功。
本帖最近评分记录 (共 2 条) 点击查看详情
评分人分数时间
HAT +2 2008-11-29 16:55
DOSroot -2 2008-11-29 19:04
11 发表于 2008-11-30 13:57 ·  中国 河北 保定 移动
铂金会员
★★★★
网络独行侠
积分 6,962
发帖 2,753
注册 2003-04-16 00:00
UID 1565
性别 男
来自 河北保定
状态 离线
DOS是一个单用户单任务的操作系统,基本上不存在并行运行这种事儿,象楼主这种要求,似乎只有两个途径:

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

2、编写专门的内存驻留程序,截取时钟中断处理程序,然后再进行时间判断,根本判断结果执行类似的操作。
偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
12 发表于 2008-11-30 22:00 ·  中国 广西 河池 电信
中级用户
★★
积分 252
发帖 97
注册 2006-09-17 12:00
UID 62869
性别 男
状态 离线
这个有什么难??

1、DOS下有个time命令,可取当前时间
2、写个BAT处理,定时如(10秒)判断一回时间,时间就关机,不就完了?
3、dos下的时钟、关机程序也很多,搜搜吧
13 发表于 2008-12-04 09:55 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
UID 49283
性别 男
状态 离线
Originally posted by DOSforever at 2008-11-29 16:41:
假如某企业委托某软件公司开发 DOS 下的软件,但某软件公司理解成 Windows 命令行下执行的软件了,做了半天总算做出来了,但对不起,我不付钱,因为我已经说明了是 DOS 下的软件。
概念不清,审题不清,做再多的事也是无用功。


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

再说了,签了合同,就要做打官司的准备。发帖子有几个是按合同要求的?呵呵。
Windows 一键还原
http://www.yjhy.com
14 发表于 2008-12-04 12:39 ·  中国 上海 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
UID 35785
性别 男
状态 离线
合同只是比喻,越是强调就越是心虚,别人名不副实是别人的事,我们不能跟着不正常的人跑,什么是正确和错误自己要有主心骨。所以没有必要强调,他们不能正确理解那是他们的事情。
15 发表于 2008-12-06 00:48 ·  中国 台湾 高雄市 中华电信
初级用户
积分 68
发帖 17
注册 2008-03-02 14:38
UID 111866
性别 男
状态 离线
寫一個 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);
}
论坛跳转: