Source code of Windows XP (NT5)
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
@echo off REM ----------------------------------------------------------------------- REM SXCOPY.CMD REM REM Purpose: Execute a safe and informative xcopy. REM - verify the existence of the source REM - write the operation performed in a logfile REM - write the execution times in a logfile REM - if xcopy fails, loop MAX times until success REM REM Parameters: REM - switches of xcopy REM - source of xcopy REM - destination of xcopy REM ----------------------------------------------------------------------- if NOT "%_echo%" == "" echo on if NOT "%verbose%" == "" echo on setlocal ENABLEEXTENSIONS
if "%3"=="" goto Usage
REM Caller can specify target to be a filename explicitly to avoid being REM prompted with the target is a file or destination set filetarget= if /i "%4"=="file" set filetarget=1
REM Verify source if exist %2 goto Start_Loop echo ERROR: xcopy source %2 does not exist. goto End
:Start_Loop REM Try xcopy MAX times (10 minutes) or until success. set /A MAX=100 set /A count=1
:Loop REM ------------------------------------------------ REM Attempts to execute xcopy: REM ------------------------------------------------ if "%count%" == "%MAX%" goto XCopy_Fail if defined filetarget ( echo f | xcopy %1 %2 %3 ) else ( xcopy %1 %2 %3 ) if errorlevel 1 ( if defined filetarget ( echo ERROR: echo f ^| xcopy %1 %2 %3 failed. Try again... ) else ( echo ERROR: xcopy %1 %2 %3 failed. Try again... ) set /A count=%count%+1 sleep 6 goto Loop ) :End_Loop
set mes= if not "%count%"=="1" set mes=succedded after %count% attempts if defined filetarget ( echotime DONE /bH:MbObD --- echo f ^| xcopy /%1 %2 %3 %mes% ) else ( echotime DONE /bH:MbObD --- xcopy /%1 %2 %3 %mes% ) goto End
:XCopy_Fail if defined filetarget ( echo ERROR: echo f ^| xcopy %1 %2 %3 failed after %MAX% attempts. echo echo f ^| xcopy %1 %2 %3 failed after %MAX% attempts. ) else ( echo ERROR: xcopy %1 %2 %3 failed after %MAX% attempts. echo xcopy %1 %2 %3 failed after %MAX% attempts. ) goto End
REM Display Usage: :Usage echo. echo Safe xcopy wrapper that logs and retries on error echo. echo Usage: %0 ^<xcopy switches^> ^<xcopy source^> ^<xcopy destination^> [file] echo ex: %0 /rf foo %%tmp%%\ echo ex: %0 /v foo %%tmp%%\foo.orig file echo. echo file Key word to denote that ^<xcopy destination^> is a filename echo as opposed to a directory name. echo Prepends "echo f |" to the xcopy command echo. goto End
:End endlocal
|