【发布时间】: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 我实际上没有收到任何类型的错误消息。使用
SLEEP和PING > nul字符串,如SO Post 所示。即使计时器很短,它似乎也只是挂起。我不得不强行关闭命令窗口。 @Johnie Karr 我能够搜索到this SO Post,并将以此为基础来尝试一下。目前对我的技能来说有点先进,但值得一试! :) -
您试图将
SLEEP与PING一起使用?你可以只做SLEEP 300休眠 300 秒(5 分钟)。
标签: batch-file if-statement delay wait terminate