在定义的循环次数后批量退出循环

Posted

技术标签:

【中文标题】在定义的循环次数后批量退出循环【英文标题】:Batch exiting loop after defined number of loops 【发布时间】:2016-07-11 12:03:55 【问题描述】:

我希望以定义的循环数(10 - 循环)退出我的循环。我在谷歌上看了一些东西,但循环是做别的事情,所以我有点迷茫。

这是我的基本循环脚本,我希望你们中的某个人能够教育我并为我指明正确的方向。如果您想知道我这样做是为了什么,这就是原因,如果您有更好的选择,请告诉我。我对这个批处理脚本相当陌生,我愿意接受建议。

此 Uninstaller.exe 不会暂停批处理脚本。所以我基本上是在寻找 Uninstaller.exe,它会在 Uninstaller.exe 进程完成后被删除。因此,一旦循环检测到可执行文件的删除,它就会退出循环并继续执行脚本中的下一个操作。

我有几次卸载程序.exe 在结束前崩溃并删除了自身并阻止批处理文件继续运行。所以我认为最好在退出之前让它循环一定次数。

:: Uninstall App
"C:\Program Files\App Name\uninstall.exe" -quiet

::Validates the uninstall
SET LookForUninstaller="C:\Program Files\App Name\uninstall.exe"

:CheckForUninstaller
IF NOT EXIST %LookForUninstaller% GOTO ExitLoop

TIMEOUT /T 5 >nul

GOTO CheckForUninstaller

:ExitLoop

【问题讨论】:

一个很好的起点是set /A,它能够进行数值操作,比如增加一个计数器;然后可以使用if 语句检查当前计数器值并有条件地跳过goto 命令;在新的命令提示符窗口中键入 set /?if /? 以获取有关这些命令的更多帮助... 【参考方案1】:

您可能会受益于使用“启动”命令在不同的进程上运行卸载程序。 您还可以利用其可选的“/WAIT”,这将允许批处理等待进程完成以继续。 毕竟你可能不需要循环。

start /WAIT "C:\Program Files\App Name\uninstall.exe"

【讨论】:

我确实有一些其他的可执行文件被触发,正如你上面提到的。不幸的是,这个“uninstaller.exe”不会暂停批处理脚本。 这很难,因为没有办法复制,祝您搜索顺利。如果您删除“-quiet”选项,它会等待吗【参考方案2】:

这是我所做的,似乎工作正常。

::Set Uninstaller Variable
SET AppToUninstall="C:\Program Files\App Name\uninstall.exe"

:: Uninstall App
"%AppToUninstall%" -quiet

::Loops for 12 times in 10 second intervals (Total 120 seconds) to confirm deletion. Loop will exit after 12 loops and move on if uninstaller is not deleted.
for /l %%i in (1,1,12) do (
TIMEOUT /T 10 >nul
IF NOT EXIST %AppToUninstall% GOTO ExitLoop
)
:ExitLoop

【讨论】:

以上是关于在定义的循环次数后批量退出循环的主要内容,如果未能解决你的问题,请参考以下文章

shell编程-------循环语句

Linux中shell的循环语句

for循环while循环break跳出循环continue结束本次循环exit退出本次脚本

不要过早的退出循环

vb中退出这次for循环和退出整个for循环各是啥

控制台应用程序在完成工作后需要很长时间才能退出