Windowsバッチファイルでサブルーチンを使用してリトライできるバッチを作成する

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している箇所で実際実行したいコマンドを記述すれば失敗時リトライするバッチとなります。

このようにサブルーチンを使えばバッチファイルでバッチファイルでリトライ処理が実装出来ます。

コメント

タイトルとURLをコピーしました