Windowsバッチファイルでサブルーチンを使用してリトライできるバッチを作成する
バッチファイルで何かの処理を実行するときに、1回失敗しても何度かリトライしたいケースがあります。
a.bat
@echo off set count=0 type > nul 2>&1 echo execute! if %ERRORLEVEL% NEQ 0 ( set /a count+=1 echo failure! ) echo retry...%count% type > nul 2>&1 if %ERRORLEVEL% NEQ 0 ( set /a count+=1 echo failure! ) echo retry...%count% if %count% EQU 2 ( echo failure!exit!! exit /b ) echo success! exit /b
これは意図的に2回実行して失敗しています。これをサブルーチンを使えばもっときれいにリトライするバッチファイルを作成することが出来ます。
a_retry.bat
@echo off
setlocal enabledelayedexpansion
@set count=0
@set max=3
call :label1 type
@exit /b
REM サブルーチン
:label1
@echo off
call %*
if %ERRORLEVEL% EQU 0 (
@echo on
echo success!
exit /b
) else (
if %count% EQU %max% (
@echo on
echo ok
exit /b
) else (
@echo on
echo retry...!count!
set /a count+=1
goto :label1
)
)
endlocal
このバッチは3回とも同じ失敗するコマンドですので、3回リトライして失敗します。
ラベル付きでcallしている箇所で実際実行したいコマンドを記述すれば失敗時リトライするバッチとなります。
このようにサブルーチンを使えばバッチファイルでバッチファイルでリトライ処理が実装出来ます。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント