|
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 楼』:
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 |
|
|
yishanju
银牌会员
     [b]看你妹啊[/b]
积分 1488
发帖 1357
注册 2006-5-20
状态 离线
|
『第
4 楼』:
人家楼主说的是纯DOS
|

有问题请发论坛或者自行搜索,再短消息问我的统统是SB |
|
2008-11-28 15:04 |
|
|
sea1112
初级用户
 
积分 131
发帖 119
注册 2007-6-12 来自 gz
状态 离线
|
『第
5 楼』:
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 |
|
|
lihkk
新手上路

积分 11
发帖 7
注册 2008-10-8
状态 离线
|
『第
6 楼』:
的确,需求是纯DOS下。
关机 —— 已找到适用的命令fdapm.com
定时 —— 看到有很多类似的求助贴,皆没有正解。
找到一个与定时相关的,但又搞不懂:
www.moon-soft.com ...
或者请教大虾,纯DOS下如何判断时间大小?
例: 如果 %当前时间% 小于(或大于) %指定时间% 则 执行xxxxxx
|
|
2008-11-28 18:55 |
|
|
DOSforever
金牌会员
     
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
『第
7 楼』:
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 ,请问还要怎么“纯”?
|

|
|
2008-11-28 20:15 |
|
|
DOSforever
金牌会员
     
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
『第
8 楼』:
回正题:
PC Tools 9.0 中有个 SCHEDULE 可以在计划的时间中执行所设定的任务,不过在运行前先要运行 CPTASK 。Windows 中的计划任务我估计就是从它那里学来的。
|

|
|
2008-11-28 20:21 |
|
|
lianjiang2004
金牌会员
     
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
『第
9 楼』:
即使写了“纯dos”,有人还是理解成cmd,
看来加个“纯”字,尽管不科学,不准确,但很有必要,呵呵。
|

|
|
2008-11-28 20:39 |
|
|
DOSforever
金牌会员
     
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
『第
10 楼』:
呵呵,这事就和方便面广告一样:
“本品不含防腐剂”
“本品绝不含防腐剂”
“本品100%不含防腐剂”
“本品100%保证不含防腐剂”
请问到底哪个才是真的不含防腐剂?
越是过多的强调就越是说明心虚,有就有,没有就没有;是就是,不是就不是。
假如某企业委托某软件公司开发 DOS 下的软件,但某软件公司理解成 Windows 命令行下执行的软件了,做了半天总算做出来了,但对不起,我不付钱,因为我已经说明了是 DOS 下的软件。
概念不清,审题不清,做再多的事也是无用功。
|

|
|
2008-11-29 16:41 |
|
|
Climbing
铂金会员
       网络独行侠
积分 6962
发帖 2753
注册 2003-4-16 来自 河北保定
状态 离线
|
『第
11 楼』:
DOS是一个单用户单任务的操作系统,基本上不存在并行运行这种事儿,象楼主这种要求,似乎只有两个途径:
1、专门运行一个程序来判断当前时间,符合要求就去执行相应的操作,例如关机。
2、编写专门的内存驻留程序,截取时钟中断处理程序,然后再进行时间判断,根本判断结果执行类似的操作。
|

偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“ 这个帖子”和“ 这个帖子”并努力遵守,如果可能,请告诉更多的人!
|
|
2008-11-30 13:57 |
|
|
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 楼』:
Originally posted by DOSforever at 2008-11-29 16:41:
假如某企业委托某软件公司开发 DOS 下的软件,但某软件公司理解成 Windows 命令行下执行的软件了,做了半天总算做出来了,但对不起,我不付钱,因为我已经说明了是 DOS 下的软件。
概念不清,审题不清,做再多的事也是无用功。 如此说来,中国dos联盟的论坛里,里面绝大多数话题都是名不副实的。因此,加上必要的强调,很有必要,呵呵。
再说了,签了合同,就要做打官司的准备。发帖子有几个是按合同要求的?呵呵。
|

|
|
2008-12-4 09:55 |
|
|
DOSforever
金牌会员
     
积分 4639
发帖 2239
注册 2005-1-30
状态 离线
|
『第
14 楼』:
合同只是比喻,越是强调就越是心虚,别人名不副实是别人的事,我们不能跟着不正常的人跑,什么是正确和错误自己要有主心骨。所以没有必要强调,他们不能正确理解那是他们的事情。
|

|
|
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 |
|