7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsync@echo off
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem $Id$
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem rem @file
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem Windows NT batch script that retries a command 5 times.
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsync
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem Copyright (C) 2009-2013 Oracle Corporation
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem This file is part of VirtualBox Open Source Edition (OSE), as
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem available from http://www.virtualbox.org. This file is free software;
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem you can redistribute it and/or modify it under the terms of the GNU
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem General Public License (GPL) as published by the Free Software
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem Foundation, in version 2 as it comes in the "COPYING" file of the
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem VirtualBox OSE distribution. VirtualBox OSE is distributed in the
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsync
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem Note! We're using %ERRORLEVEL% here instead of the classic
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem IF ERRORLEVEL 0 GOTO blah because the latter cannot handle
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem the complete range or status codes while the former can.
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem Note! SET changes ERRORLEVEL on XP+, so we have to ECHO
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem before incrementing the counter.
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncrem
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncset /a retry_count = 1
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsync:retry
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsync%*
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncif %ERRORLEVEL% == 0 goto success
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncif %retry_count% GEQ 5 goto give_up
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncecho retry.cmd: Attempt %retry_count% FAILED(%ERRORLEVEL%), retrying: %*
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncset /a retry_count += 1
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncgoto retry
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsync
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsync:give_up
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncecho retry.cmd: Attempt %retry_count% FAILED(%ERRORLEVEL%), giving up: %*
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncset retry_count=
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncexit /b 1
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsync
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsync:success
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncif %retry_count% NEQ 1 echo retry.cmd: Success after %retry_count% tries: %*!
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncset retry_count=
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsyncexit /b 0
7337a7243f2fb238d3d3ff90dd4c7d1aa369efbevboxsync