3

我通过了几种导致时间延迟的方法,例如 pings 和 dirs。尽管它们都不是真正精确的,但是否有适当的方法来造成时间延迟?

我听说过一些事情,尽管它们不能在所有计算机上运行,​​在我的 Windows XP 和大学的 Windows NT 上都没有。

浏览 Google 上的所有文件需要很长时间才能找到一个好的答案,而且由于我还没有在 Stack Overflow 上找到问题,所以我认为自己创建问题可能会很好;)

4

5 回答 5

6

睡觉

它将允许您执行此操作。

于 2009-04-21T18:39:29.190 回答
5

<warning>This is a hack</warning>

使用您最喜欢的编程语言(MS-DOS 批处理除外)并创建一个应用程序,该应用程序接受一个参数,即等待的毫秒数,然后,只需从批处理文件中调用该程序以休眠所需的时间。

据我所知,这是在 DOS 中唯一可靠的方法。

于 2009-04-21T18:48:33.070 回答
2

如果您没有能力将另一个程序与批处理文件一起发送,请使用DEBUG即时编写睡眠命令,然后执行它。

编辑:上面的答案有点开玩笑。我不会运行其中包含一些调试技巧的批处理文件。我相信在批处理文件中使用延迟的传统方式是CHOICE commad。

type nul|choice /c:y /t:y,nn > nul

当然,这在 XP 中不起作用,因为那样 WAAYY 太方便了。

于 2009-04-21T18:50:59.397 回答
0

“...正确的方式....”

你不能在 DOS 中这样做。

于 2009-04-21T18:46:18.910 回答
0

根据您机器的速度,可以达到几毫秒的精度。

我刚刚创建了这样一个批处理,虽然我不会与你分享实际代码,但我会给你一些指示:

  1. 使用 %time% 变量,并划分为子字符串(没有“:”和“。”) - 一个子字符串将获得秒,另一个 - 分钟(您可以添加小时,延迟超过一个小时,甚至包含日期)

  2. 使用 set /A 将时间变量转换为 1 个整数,表示自舍入小时 (X:00:00.00) 以来经过的秒数。将输入的延迟(以秒为单位)添加到其中。

  3. 创建一个短循环,将组合 var 的值(在第 2 节中解释)与当前时间(需要在此循环内重新计算当前组合的 min+sec 值)进行比较,并在匹配为真时退出循环。

这里的一个主要错误修复 - 您需要将任何前面的零截断为即将在“set /A”命令中评估的变量。我注意到,当使用前面带有 08 或 09(或简单的 08 或 09)的整数时,控制台的求值器(对于此命令)会返回错误。

备注:这仅适用于启用命令扩展。要对其进行测试,请在例程开始时使用以下内容:

verify other 2>nul
setlocal enableextensions
if errorlevel 1 goto err

然后添加一个名为“err”的错误处理程序子程序。

如果您想在同一个文件中继续批处理,请在循环子例程之后使用“endlocal”。

顺便说一句,这仅适用Windows XP Service Pack 2 或 3。

于 2009-09-28T07:27:46.287 回答