如果命令提前完成,如何自动停止超时计数



在我的脚本中,我使用timeout来设置执行命令的最大时间限制。

start 7z.exe t %%f
if errorlevel 2 (DEL %%f & echo File broken. Reload File!)
timeout /t 3600

如果执行持续时间超过一个小时,则超时应中断执行。这很有效,没有任何问题。

但是,如果命令在时间戳之前完成,我如何忽略超时计数并自动执行脚本?

正如目前所写的,不带/W开关的start命令不会影响/更改errorlevel证明

==> hfhgf
'hfhgf' is not recognized as an internal or external command,
operable program or batch file.
==> echo %errorlevel%
9009
==> start "" ping.exe localhost
==> echo %errorlevel%
9009
==> start "" /W ping.exe localhost
==> echo %errorlevel%
0

使用/W/WAIT开关(启动应用程序并等待其终止),并按如下方式移除所有timeout行。我猜您的代码片段可能是for循环的do部分:

for %%f in (*.zip) do (
  (call )
  start "" /W 7z.exe t "%%f"
  if errorlevel 2 (
     echo File broken. Reload File %%f
     DEL "%%f"
  )
)

关于(call )的解释,请参阅Dave Benham对将ERRORLEVEL设置为0问题的回复:

如果您想强制errorlevel为0,那么您可以使用完全不直观,但非常有效的语法:(call )。空间之后调用至关重要。如果要将errorlevel设置为1,则可以使用CCD_ 11。至关重要的是调用

最新更新