2016-03-24 8 views
0

定義済みのループ数(10ループ)でループを終了します。私はGoogleでいくつかのことを見たが、ループは何か他のことをすることだったので、私は少し失われた。定義済みのループ数の後にループを一括して終了する

ここに私の基本的なループスクリプトがあります。あなたの一人が私を教育し、正しい方向に向けることを願っています。私がこのようにしていることをあなたが疑問に思っているなら、ここに理由があり、あなたがより良い選択肢を持っているなら、私に知らせてください。私はこのバッチスクリプティングをかなり新しくしています。私は提案を公開しています。

この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

は私がやったことですし、[OK]を動作するようです。

::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 
関連する問題