在定义的循环次数后批量退出循环
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
【讨论】:
以上是关于在定义的循环次数后批量退出循环的主要内容,如果未能解决你的问题,请参考以下文章