非 DOS 脚本

非 DOS 脚本

我有一个在交互式命令提示符之外执行的批处理脚本。我想在其中两个命令之间休眠 30 秒吗?

我读过一些对类似问题的答复,您可以使用timeoutchoice,但这些在非交互式会话中会失败。

ERROR: Input redirection is not supported, exiting the process immediately.

我已经在其他类似问题的答复中看到过您可以使用waitfor,但这会设置一个错误级别,而我依赖于整个脚本中的错误级别。

我见过使用 ping 会失败ping -n 1 -w 30000 192.168.not.reachable > NUL,而这个似乎有效,但这似乎是错误的,我不能依赖于在所有我将部署到的系统上无法访问的单个 IP。

还有其他方法可以让我尝试吗?

谢谢。

编辑:

这个答案(如何在批处理文件中休眠?) 肯定有相关材料,但并未解决在交互式 shell 之外工作的解决方案的需求。它确实提到了我现在唯一的选择: ping,但正如我上面所问的,我正在寻找替代方案。

另外,感谢您对 PowerShell 的建议,但现在还不可能。

答案1

http://www.robvanderwoude.com/wait.php

非 DOS 脚本

每当您需要 Rexx 脚本中的延时时,请使用 SysSleep 函数。SysSleep 可在 OS/2 的 (本机) RexxUtil 模块和 Patrick McPhee 的 32 位 Windows RegUtil 模块中使用。

使用 Sleep 命令来实现 KiXtart 脚本的时间延迟。

使用 WScript.Sleep,然后在 VBScript 和 JScript 中延迟几毫秒(不幸的是,此方法在 HTA 中不可用)。

以下批处理代码使用临时 VBScript 文件来生成准确的延迟:

@ECHO OFF
REM %1 is the number of seconds for the delay, as specified on the command line
> "%Temp%.\sleep.vbs" ECHO WScript.Sleep %~1 * 1000
>> CSCRIPT //NoLogo "%Temp%.\sleep.vbs"
>> DEL "%Temp%.\sleep.vbs"

这不是我的解决方案,我只是发现了它:

相关内容