VBS脚本中Sleep方法的最大延迟时间

标签: , , , ,

问题出自批处理之家一个标题为《VBS脚本的Sleep函数的最大延迟时间是多少?》的帖子:

描述问题:我现在想利用VBS里面的sleep函数来作为一个定时器,时长应该是小时级别的,可能需要3个小时的定时,也就是需要延时3个小时,然后再处理后续的指令。
求助版上的各位高手,谢谢!!!!!

VBS 中 WScript 对象的 Sleep 方法在内部应该调用的是 Sleep Windows API 函数,根据 MSDN 文档,Sleep 函数的声明如下:

VOID WINAPI Sleep(
    __in  DWORD dwMilliseconds
);

Sleep 函数只有一个参数 dwMilliseconds,表示线程挂起的毫秒数,参数类型为 DWORD。MSDN 文档对 DWORD 类型是这么描述的:

A DWORD is a 32-bit unsigned integer (range: 0 through 4294967295 decimal). Because a DWORD is unsigned, its first bit (Most Significant Bit (MSB)) is not reserved for signing.

This type is declared as follows:

typedef unsigned long DWORD, *PDWORD, *LPDWORD; 

DWORD 是32位无符号整数,范围是0到4294967295(2的32次方减一),所以理论上 Sleep 函数的最大延迟时间是 DWORD 能够表示的最大值4294967295毫秒。

4294967295毫秒是个什么概念呢?写个简单的 VBS 脚本换算一下:

MsgBox (2 ^ 32 - 1) / (1000 * 60 * 60 * 24)

结果是49.7102696180556天,虽然不知道实际上是否能延迟那么长的时间,但是延迟3个小时还是没有问题的。

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. VBS Scripting.Dictionary 排序
  2. VBScript获取硬盘与分区个数
  3. VBS统计字符串全部字符出现的次数并排序
  4. VBS任意进制转换(实现PHP的base_convert函数)
  5. JavaScript函数参数,传值还是传址?

一条评论 发表在“VBS脚本中Sleep方法的最大延迟时间”上

  1. towry说道:

    win下编程,很不错。

留下回复