Time (MS-DOS)时间延迟

Time (MS-DOS)时间延迟,time,dos,delay,Time,Dos,Delay,我遇到了一些导致时间延迟的方法,比如ping和dirs。虽然没有一个是真正精确的,但有没有一种非常恰当的方式来造成时间延迟 我听说了一些东西,虽然它们不能在所有的计算机上运行,但在我的Windows XP和大学的Windows NT上都不能 搜索Google上的所有文件要花很长时间才能找到一个好的答案,因为我还没有在Stack Overflow上找到这个问题,所以我认为自己创建这个问题可能会更好;) 它将允许您执行此操作。“…正确的方式…” 你不能在DOS中这样做。这是一种黑客行为 使用您喜爱

我遇到了一些导致时间延迟的方法,比如ping和dirs。虽然没有一个是真正精确的,但有没有一种非常恰当的方式来造成时间延迟

我听说了一些东西,虽然它们不能在所有的计算机上运行,但在我的Windows XP和大学的Windows NT上都不能

搜索Google上的所有文件要花很长时间才能找到一个好的答案,因为我还没有在Stack Overflow上找到这个问题,所以我认为自己创建这个问题可能会更好;)

它将允许您执行此操作。

“…正确的方式…”

你不能在DOS中这样做。

这是一种黑客行为

使用您喜爱的编程语言(MS-DOS批处理除外)创建一个应用程序,该应用程序只需一个参数,即等待的毫秒数,然后从批处理文件中调用该程序即可达到所需的睡眠量


据我所知,这是在DOS中执行此操作的唯一可靠方法。

如果您没有能力随批处理文件发送另一个程序,请使用动态编写休眠命令并执行它

编辑: 上面的回答有点开玩笑。我不会运行带有调试技巧的批处理文件。我相信在批处理文件中使用延迟的传统方法是commad


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

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

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

  • 使用%time%变量,并将其划分为子字符串(不带“:”和“.”)-一个子字符串将获得秒,另一个子字符串将获得分钟(对于超过一小时的延迟,您可以添加小时,甚至可以合并日期)

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

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

  • 这里有一个主要的错误修正——您需要将任何前面的零截断为变量,这些变量将在“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。

    我明白了,我会尝试一下。由于.bat是为了与anny pc兼容而设计的,所以我必须每次下载该文件。。。但是我看看我能用它做些什么,泰,看看你的反应:)我明白了,我找到了一个很好的方法来使用它。所以这可能是最好的方法。稍微调整了一下,但确实如此。既然你提到XP和NT,我假设你指的是控制台,而不是实际运行MS-DOS:)你可以添加一个实用程序来进行睡眠吗?你说ping选项不精确,你需要什么样的精度?人们说很多,你必须能够创建它,即使你只是创建了一个命令,如果我想输入5秒,只需重复一个命令5次,让它保持忙碌1秒钟……我想他的意思是:在DOS中,如果没有重大的黑客攻击,你就无法做到这一点。这不是我使用的,但这是一个很好的解决方法,很难,我真的不知道一种语言在这种情况下会有什么用途。当然,我可以让它编写一个php脚本,而不是执行它,php脚本会隐藏、等待,然后在批处理继续后删除窗口…@billyy:你能这样写一个php脚本吗<代码>
    verify other 2>nul
    setlocal enableextensions
    if errorlevel 1 goto err