2016-03-24 71 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