【问题标题】:Within an "IF EXIST", wait two hours then quit在“IF EXIST”内,等待两个小时然后退出
【发布时间】:2014-04-29 04:38:56
【问题描述】:

大家早上好。

我在这里的第一个问题,但我已经关注这个网站很长时间了。事实上,到目前为止,它已经帮助我创建了大约三打(虽然更简单)的批处理文件!我终于很难找到答案了。如果它被覆盖,请原谅我,但我找到的任何东西都不适合我的应用程序。

这是我正在使用的代码。过程如下。如果 file.zip 存在,则转到解压缩命令;否则,请等待五分钟,然后再次检查。这将不断循环,直到找到一个文件。

:checkexist
IF EXIST "\\server\folder\subfolder\file.zip" (
GOTO zipexist
) ELSE (
ECHO.
ECHO File not found. Lets wait, say, 5 minutes ...
ECHO.
TIMEOUT /t 300 /nobreak
GOTO checkexist
)

:zipexist
ECHO.
ECHO Unzipping will begin in 30 seconds.

代码继续。

实际上,它工作得很好。我遇到的问题是文件 从不 是否存在 - 例如,如果它从未上传,或者当天没有文件。我尝试使用 SLEEP 命令的一些选项,并使用我在 MS TechNet 上找到的关于 SET DELAY=nn 的内容,但无济于事。我正在尝试为这个简单的 if/else 语句找到一个包装器(?),它只允许它运行 nn 分钟,如果没有找到 file.zip,则终止批处理文件。这最终将在服务器端进程上运行,因此没有用户可以进行判断调用。

对于如何以同样简单的方式完成此任务有什么建议吗?我意识到有很多选择,但有时语法让我感到困惑;我还在学习。

请原谅此初始帖子之后的任何愚蠢问题! :) 我快到了,抱歉我有点慢。

【问题讨论】:

  • 必须是nn分钟吗?你能设置一个每次迭代递增的计数器吗?如果计数器大于您允许的最大尝试次数,则退出?
  • 为什么SLEEP 命令不起作用?你收到错误信息了吗?告诉我们运行时发生的情况与您的预期相比。
  • @aporia 我实际上没有收到任何类型的错误消息。使用SLEEPPING > nul 字符串,如SO Post 所示。即使计时器很短,它似乎也只是挂起。我不得不强行关闭命令窗口。 @Johnie Karr 我能够搜索到this SO Post,并将以此为基础来尝试一下。目前对我的技能来说有点先进,但值得一试! :)
  • 您试图将SLEEPPING 一起使用?你可以只做SLEEP 300 休眠 300 秒(5 分钟)。

标签: batch-file if-statement delay wait terminate


【解决方案1】:

这实现了建议,但说明了检查文件并在循环执行 24 次 = 2 小时后继续执行的不同方法

set num=0
:checkexist
IF NOT EXIST "\\server\folder\subfolder\file.zip" if %num% LEQ 24 (
ECHO.
ECHO File not found. waiting 5 minutes ... times (%num%^)
ECHO.
TIMEOUT /t 300 /nobreak
set /a num+=1
GOTO checkexist
)

:zipexist
ECHO.
ECHO Unzipping will begin in 30 seconds.

【讨论】:

  • 感谢您的代码示例!在约翰尼的建议和追捕之后,我想出了这个说法。不过,经过检查,我从SET /a num+=1 中省略了斜杠-a。愚蠢的错误。那是缺失的部分。现在完美运行。谢谢你们。
【解决方案2】:

尝试在 IF 语句之外放置一个计数器,并在循环中增加它。一旦计数器达到你的极限,然后退出。

很抱歉没有提供代码示例,批处理脚本对我来说是很久以前的事了。

【讨论】:

  • 谢谢。我会试试的。我在这里找到了几篇关于它的帖子,所以我想我可以从那里向后工作。我会尝试一下,让所有人知道它是如何工作的。谢谢你的指导,我从没想过这个选项!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 2018-11-27
  • 2013-03-12
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多