:: ErrLvl.bat - Reset/set and Display/get errorlevel (设置和获取错误返回码)
:: Will Sort - 2005/04/16 - Win98/MSDOS7.1/CMD@WinXP
:: Test(测试):
:: if %1>255 ==> %el%=(%1 mod 256)
:: if %1=e11 ==> %el%=0
:: if %1=11e ==> %el%=11
::
@echo off
if "%1"=="" goto Get
if "%1"=="@" goto Get
if not "%1"=="/?" goto Set
:help
echo.
echo ErrLvl.bat - Reset/set and Display/get errorlevel (设置和获取错误返回码)
echo Usage(用法):
echo set errorlevel(设置错误返回码): errlvl decnum(十进制数) [@]
echo get errorlevel(获取错误返回码): errlvl [@]
echo @ 是可选的静默开关,使用它将不会显示执行结果
echo @ is optional quiet switch.
echo.
goto end
:Set - 设置错误返回码
if exist ~ErrLvl.com goto SetRun
:SetMake - 制作设置错误返回码的debug汇编脚本并生成com程序
echo >~ErrLvl.asd A100
echo>>~ErrLvl.asd MOV SI,0082
echo>>~ErrLvl.asd XOR AX,AX
echo>>~ErrLvl.asd XOR BX,BX
echo>>~ErrLvl.asd MOV CX,000A
echo>>~ErrLvl.asd MOV BL,[SI]
echo>>~ErrLvl.asd CMP BL,30
echo>>~ErrLvl.asd JL 0120
echo>>~ErrLvl.asd CMP BL,39
echo>>~ErrLvl.asd JG 0120
echo>>~ErrLvl.asd SUB BL,30
echo>>~ErrLvl.asd MUL CX
echo>>~ErrLvl.asd ADD AX,BX
echo>>~ErrLvl.asd INC SI
echo>>~ErrLvl.asd JMP 010A
echo>>~ErrLvl.asd MOV AH,4C
echo>>~ErrLvl.asd INT 21
echo.>>~ErrLvl.asd
echo>>~ErrLvl.asd N ~ErrLvl.com
echo>>~ErrLvl.asd R CX
echo>>~ErrLvl.asd 24
echo>>~ErrLvl.asd W
echo>>~ErrLvl.asd Q
debug < ~ErrLvl.asd > nul
:SetRun - 运行设置错误返回码的com程序
~ErrLvl %1
if "%2"=="@" goto end
:Get - 获取错误返回码
set el=0
if errorlevel 1 set el=1
if not errorlevel 2 goto GetDisplay
:GetBit - 按百位、十位、个位的顺序获取错误返回码
set el=
if errorlevel 100 for %%n in (1 2) do if errorlevel %%n00 set el=%%n
set #el=0 1 2 3 4 5 6 7 8 9
if "%el%"=="2" set #el=0 1 2 3 4 5
if errorlevel 10 for %%n in (%#el%) do if errorlevel %el%%%n0 set el=%el%%%n
set #el=0 1 2 3 4 5 6 7 8 9
if "%el%"=="25" set #el=0 1 2 3 4 5
for %%n in (%#el%) do if errorlevel %el%%%n set el=%el%%%n
set #el=
:GetDisplay - 显示错误返回码
if not "%1"=="@" echo Current errorlevel is(当前错误返回码为): %el%
goto end
:end |
|