2016-03-24 40 views
0

我正在寻找以定义数量的循环退出循环(10循环)。我在谷歌上看了一些东西,但循环是要做其他事情,所以我有点迷路。在定义的循环数之后批量退出循环

这是我的基本循环脚本,我希望你们中的一个能教育我并指向正确的方向。如果你想知道我在做什么,这就是为什么,如果你有更好的选择,请让我知道。我对这个批处理脚本相当陌生,我很乐意提供建议。

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

我已经有几次uninstaller.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 
+0

一个好的起点是'set/A',它可以像增加一个计数器那样进行数字操作;一个'if'语句可以用来检查当前的计数器值并有条件地跳过'goto'命令;键入'set /?'和'if /?'到一个新的命令提示符窗口中,以获得对这些命令的更多帮助... – aschipfl

回答

0

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

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

+0

我确实有一些其他可执行文件正如上面提到的那样被触发。不幸的是,这个“uninstaller.exe”不会暂停批处理脚本。 – Bill

+0

这是一个艰难的,因为没有办法重现,祝你好运与您的搜索。如果您删除“-quiet”选项,它会等待吗? – user4080820

0

这里是我做的,似乎工作确定。

::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