中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-13 18:57
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何产生一个24小时制的随机的时间?
楼 主 如何产生一个24小时制的随机的时间? 发表于 2008-12-05 18:02 ·  中国 广东 深圳 电信
初级用户
★★
游手好闲 + 无所事事 ..
积分 194
发帖 167
注册 2007-04-30 09:43
UID 87022
性别 男
状态 离线
如何编制一个批处理 rndtime.bat ,要求实现以下功能:

1、直接运行它,将生成一个随机时间变量 rtime,其格式为 HHMM,HH是小时,MM是分钟,其中小时是位于当前小时到23时之间。

2、若加参数 X Y,即运行 rndtime X Y后,将产生一个随机变量,其小时位于X到Y小时之间。(进阶要求,可以不考虑这个功能)

这个程序的目的,每天开机之后在后台运行,产生一个随机的时间,并根据这个时间添加一个任务。

这个时间是在开机之后的时间,这样可以保证该任务每天都能运行,而且每次启动的时间都不同,当时是用来上传ftp数据的,避免所有400个点同一时间登陆ftp造成拥堵。

一年前我写成功了,可是后来忘记了,而且当时写的有点复杂,请哪位高手写一个来讨论讨论?
2 发表于 2008-12-05 19:39 ·  中国 广西 桂林 电信
初级用户
积分 26
发帖 14
注册 2008-07-06 22:26
UID 121182
状态 离线
@ECHO OFF&SETLOCAL ENABLEDELAYEDEXPANSION
Set/A H=%Random%%%24
Set/A M=%Random%%%60
FOR %%i IN (M H) DO IF /I !%%i! LSS 10 Set %%i=0!%%i!
Set rtime=%H%:%M%
ECHO %rtime%
Pause


试试。
3 发表于 2008-12-05 20:16 ·  中国 广东 深圳 宝安区 电信
初级用户
★★
游手好闲 + 无所事事 ..
积分 194
发帖 167
注册 2007-04-30 09:43
UID 87022
性别 男
状态 离线
2楼写的很好!

顺便请教一下 “!”的用法?我不会用这个。
另外, SET/A 我知道是运算,可是【H=%Random%%%24】是指什么?
用随机变量 %RANDOM% 乘以 %% 再乘以24么?那么中间的%%是指什么

%***%我只知道是引用变量。
4 发表于 2008-12-05 20:29 ·  中国 广西 桂林 电信
初级用户
积分 26
发帖 14
注册 2008-07-06 22:26
UID 121182
状态 离线
%Random% % 24
是%Random%对24求余(取模),即除以24后得到的余数。在这里的用处是为了保证随机生成的数小于24。
至于!,请参考这里:
http://www.cn-dos.net/forum/viewthread.php?tid=32638

[ Last edited by Saber on 2008-12-5 at 20:34 ]
论坛跳转: