社区首页 >问答首页 >超时/t 10 /nobreak > NUL被卡住了,无法在windows 2003服务器VM上执行下一条语句。

超时/t 10 /nobreak > NUL被卡住了,无法在windows 2003服务器VM上执行下一条语句。
EN

Stack Overflow用户
提问于 2019-12-03 02:33:03
回答 1查看 2.2K关注 0票数 0

"timeout /t 10 /nobreak > NUL"被卡住了,无法执行下一条语句。我编写了下面的脚本,它按预期在我的dev机器上执行,并且也在少数测试机器上进行了测试。它等待10秒并再次开始执行(在安全模式下也进行了测试),但是在许可证过期的机器windows 2003服务器上,我的脚本以安全模式运行,但是当执行上述超时语句时,它不会执行下一个语句。

如果有的话,谁能告诉我原因吗?解决办法是什么?

代码语言:javascript
代码运行次数:0
复制
set restart=1
...
... some other code
...
setlocal ENABLEDELAYEDEXPANSION
:WaitToRestart
if "%restart%"=="1" (
    echo waiting for restart >> log.txt
    shutdown /r /t 0
    if "!errorlevel!" NEQ "0" (
        echo error: !errorlevel! while restarting so wait for 10 sec >> log.txt
        timeout /t 10 /nobreak > NUL
        goto WaitToRestart
    )
    echo error: !errorlevel! you shuld not be here to see after death >> log.txt
)
setlocal DisableDelayedExpansion

在我的dev机器上,这个脚本运行良好(windows 10),但它停留在Windows 2003上的生产环境(在生产环境中,它作为启动脚本运行,在安全模式下启动后运行)。

因此,我用命令"PING localhost -n 6 >NUL“来更改"timeout”命令,但它在旋转10、12次之后也会卡住。当我删除"PING“命令时,它会旋转很长一段时间,直到命令”关机“成功执行为止。

它看起来像是特定于机器的问题,并且可能因为许可证过期问题而停止,因为我已经从物理机器的备份中创建了VM。

EN

回答 1

Stack Overflow用户

发布于 2019-12-04 00:59:27

如果您只是想获得一个等待函数,您可以操纵ping来完成这个任务。

代码语言:javascript
代码运行次数:0
复制
ping 0 -w 1000 -n 10 >nul

cmd将0扩展为0.0.0.0,即IP地址cmd将尝试ping (它不存在)。-w指定ping在超时请求之前等待的毫秒数。-n指定要发送多少请求(因此您的总持续时间(以秒为单位)是w/1000 * n)。>nul不是ping-specific;它使输出无效到控制台。

通过敲击不存在的IP,可以强制ping对每个请求进行超时,从而为您提供可靠的等待时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59155060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文