John:
Usually (but not always!) MS-DOS-based programs exit with errorlevel 0 upon success, otherwise it is something else (it could be any number really, this is chosen by the programmer of said application).
From
XCOPY, a web page I found about said command, it states:
Quote:
Errorlevels
* 0 Files were copied without error
* 1 No files were found to copy
* 2 The user pressed CTRL+C (^C) to terminate XCOPY
* 4 Initialization error occurred. There is not enough memory or disk space, or you entered an invalid drive name or invalid syntax on the command-line
* 5 Disk write error occurred
|
So, in your batch file you could write the following:
Code:
XCOPY <parameters>
IF ERRORLEVEL 5 GOTO DISKERROR
IF ERRORLEVEL 4 GOTO INITERROR
IF ERRORLEVEL 2 GOTO CTRLC
IF ERRORLEVEL 1 GOTO NOFILES
IF ERRORLEVEL 0 GOTO SUCCESS
GOTO END
:DISKERROR
echo A disk error occured.
REM This line is a REMARK line (or comment). It does nothing.
REM You can put any commands you want here! When the batch file
REM hits GOTO END, it will do just that - go to the label marked "END".
GOTO END
:INITERROR
echo Initialization error occurred. There is not enough memory or disk space, or you entered an invalid drive name or invalid syntax on the command-line.
GOTO END
:CTRLC
echo User pressed CTRL-C!
GOTO END
:NOFILES
echo No files were found to copy.
GOTO END
:SUCCESS
echo Files were copied successfully!
GOTO END
:END
echo Done.
Just a note on batch files: You must put the errorlevel checks in decreasing order - MS-DOS/XP-DOS was changed from the original code in such a way that makes it broken in this regard.
I wish I could dig up the batch file I wrote for my BBS I operated a few years ago (on a 2400 baud modem!). It was a couple of pages long and did everything - ran Binkley, all my nightly maintenance scripts and handled my echomail!