GlobalAccessSoftware icon

ErrorHandling.bat

GlobalAccessSoftware | PRO | 11/16/23 05:31:59 AM UTC | 0 ⭐ | 408 👁️ | Never ⏰ | []
Batch |

8.93 KB

|

Software

|

0 👍

/

0 👎

 
 
:::  RC8 Update!  :::
 
:::::::::::::::::::::::::::::::::::::::::::::::::
::: ErrorHandling.bat by -JpE- 20220628231816 :::
:::::::::::::::::::::::::::::::::::::::::::::::::
 
::: This has settled in nicely and is
::: Great to the level at which below it are hard hat,
::: YEO, Top Secret Development areas. Jp Aug 17th, 23.
 
  if not defined util3 set util3="%bats%\utility3.bat"
  ::: ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  if not defined vers set vers=v8.7.0.10 20231108073214 by -JpE-
 
  title Error: #%errorlevel% on %date% @ %time% in %vers%
 
::: set testwell=3 to enter full test mode.
set /a testwell=0
REM set /a testwell=1
REM if %code2% equ 7 set /a testwell=3
REM if %code2% equ 7 set /a testwell=5
if %code2% equ 7 set /a testwell=1
rem ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NOTE!
  set "txt21=%~1" & set "sndr42=%~2"
 
 
::: Proof of Concept for makeline function.
:welcome
  set chars2Pad=*-=-
  REM call %util3% charrev :revchars "%chars2Pad%"
  set /a counter213=0
  set txt2=Welcome to the Error Handling Module
    rem Degradated all the below to one line now!
    call %util3% t :middleman "%chars2Pad%" "%txt2%"
  REM call %util3% line2 :makeline "%chars2Pad%" "%txt2%"
  REM call %util3% pd1 pd2 "%line2%" "%chars2Pad%" "%txt2%"
  REM echo . & echo %line2%
  REM echo %charrev%%pd1% %txt2% %pd2%%charrev%
  REM echo %line2% & echo .
  
  ::: See utility3.bat for the functions that were here!
 
:start
  if not exist %util3% echo . & echo Can't find utility3.bat! & echo . & pause & echo . & exit /b
  set txt=Backup
  if not defined r3v3rs3 set /a r3v3rs3=1
  if %r3v3rs3% equ 2 set txt=RESTORE
  set chars2Pad=-=*
  call %util3% charrev :revchars "%chars2Pad%"  
  echo . & set myLine1=Calling ErrorHandling.bat %vers%
  call %util3% line4 :makeline "%chars2Pad%" "%myLine1%"
  call %util3% sizestr1 :strlen "%line4%"  
  set myLine2=ATTENTION: An Error Occurred in the %oper% %txt% Operation!
  call %util3% line0 :makeline "%chars2Pad%" "%myLine2%"
  call %util3% sizestr2 :strlen "%line0%"
 
  set /a lgr0=0 & set /a gap1=1 & set /a gap2=1
  if %sizestr1% gtr %sizestr2% set /a lgr0=1
  if %sizestr2% gtr %sizestr1% set /a lgr0=2
  if %lgr0% equ 0 if %testwell% gtr 2 (
    echo The lines are the same size!)
  if %lgr0% equ 1 if %testwell% gtr 2 echo line1 is longer.
  if %lgr0% equ 2 if %testwell% gtr 2 echo line2 is longer.
  if %testwell% gtr 2 echo .
  if %lgr0% equ 2 set line4=%line0%
  
  ::: Now that that's settled we can just...
  call %util3% gappa1 gappa2 "%line4%" "%chars2Pad%" "%myLine1%"
  call %util3% gappa3 gappa4 "%line4%" "%chars2Pad%" "%myLine2%"    
  echo %line4% & echo %charrev%%gappa1% %myLine1% %gappa2%%charrev%
  echo %line4% & echo %charrev%%gappa3% %myLine2% %gappa4%%charrev%
  echo %line4% & echo .
  
  if not defined where set /a where=0
  if %where% gtr 5 goto fatal
  if %code2% equ 5 goto nothingSent
  if %code2% neq 7 if exist %test% goto unhandled
  
  ::: SPLIT DOWN TO ISOLATE and Test NEWEST CODE BELOW.
if %testwell% gtr 1 call :testcode
if %testwell% gtr 0 goto tester
if %testwell% gtr 0 echo . & echo ReTesting... & echo . & pause & echo .
if %testwell% gtr 1 goto return
 
 
  :::=[ ACTIONS ]=::: 
  
:drive
  echo %l2% & echo .
  echo " >>===> UNLOCK BITLOCKER for D:\ AND TRY AGAIN."
  echo . & set msg="Are you ready to try again? (Y/n): "
  choice /c yn /n /t 180 /d y /m %msg%
  echo . & echo %l2% & if %errorlevel% neq 2 set /a exit2=5
  if %errorlevel% neq 1 if %counter213% lss 10 (
    set /a counter213+=1 & goto drive )
  goto return
 
 
:okay
  echo .
  echo %sl%
  echo          ****  Operation  (s) Cancelled by: %username%  ****
  echo %sl%
  echo .
  echo %line4%
  goto return
 
 
::: Fatal Error! ** if %where% gtr 5 **
:fatal
  echo %l2% & echo . & echo %sl%
  echo            **  "FATAL ERROR: #"%where% <-===<< **
  echo           **** "copies_backups.bat" Can't be Found! ****
  echo %sl% & echo . & pause & echo . & echo %l2% & set /a exit2=6
  goto return
 
 
:::  echo if %where% equ 1 thru 4 then blah blah bla
:::  originally Called from copy_control.bat
:unhandled
  if %where% equ 1 goto drive
  echo . & echo %time% & echo .
  set msg1=An unhandled exception occurred
  set msg2=in the copy-subs somewhere:
  set msg3=The where code == %where%
      call %util3% line :makeline "%chars2Pad%" "%msg1%"
    echo %line% & echo %charrev% %msg1% %charrev% & echo %line%
        call %util3% s1 s2 "%line%" "%chars2Pad%" "%msg2%"
    echo %charrev%%s1% %msg2% %s2%%charrev% & echo %line%
        call %util3% s1 s2 "%line%" "%chars2Pad%" "%msg3%"
    echo %charrev%%s1% %msg3% %s2%%charrev% & echo %line%
  if %testwell% gtr 0 echo . & set msg="Test run :unh again? (y/N): "
  if %testwell% gtr 0 choice /c yn /n /t 300 /d n /m %msg%
  if %testwell% gtr 0 if %errorlevel% gtr 1 echo . & echo Bye! & echo . & echo See ya... & echo . & exit
  exit /b
  ::: By contrast, the :padder function maintains programmable left end spacing and merely fills in the end of the line to match the parms given by l1, I think it is offhand.
  
  
:testcode <GLOBAL: no args sent or returned>
  echo . & echo errorlevel == %errorlevel% & echo .
  echo code2 == %code2% & echo . & pause & echo .
  exit /b %errorlevel%
  :::=-[ Fairly good to here.]-=:::
 
 
  :::-=[ DANGER! UNDER CONSTRUCTION. HARD HAT REQUIRED BELOW THIS LEVEL! ]=-:::
 
:tester <string txt21, string sndr42>
  if %code2% neq 7 (goto drive) else (
    call :next nextcall "%txt21%" "%sndr42%" )
  if %errorlevel% neq 0 echo . & echo OH NO! & echo . & pause & echo . & goto return
 
  ::: It is now implicit that errorlevel is zero and code.2 == 7!
  if %testwell% lss 1 echo . & echo NOT IN TEST MODE RIGHT NOW! & echo . & set /a code2=0 & goto return
  if not defined nextcall goto duh
  if "%nextcall%" equ "" goto duh  
  call :%nextcall% result6 %sndr42%
  ::: calls next1 or next2
  if not defined result6 set result6=No results were returned.
  if "%result6%" equ "" set result6=No result found.
  set msg4=Result: %result6%
  set chrs=-=-/\-=-\/
  REM set chrs=-=*/\
      call %util3% t :middleman "%chrs%" "%msg4%"
  if %testwell% gtr 1 echo . & echo Test Again? & pause & CLS
  if %testwell% gtr 1 goto return
  if %testwell% gtr 0 call :unhandled
  exit /b
 
 
:duh
  echo . & echo Unanticipated Exception!
  echo . & pause & goto unhandled
 
 
::: Route the Exception accordingly.
:next <stringVarReturned next, stringVar msg1, stringVar sender>
  setlocal & set "msg1=%~2" & set "sender=%~3" & echo .
  if %errorlevel% equ 0 (
    echo . & echo The :next function succeeded! & echo .
    if %testwell% gtr 1 pause & echo .
    ) else ( echo .
      echo errorlevel == %errorlevel% was indicated.
      echo . )
::: To TestWell :next2 & this else: flip line below to gtr 0
REM if %testwell% gtr 0 set sender=ErrorHandling.bat
 
if %testwell% gtr 1 set sender=ErrorHandling.bat
  if "%sender%" equ "Silent_mode.bat" (
    set next=next1 ) else ( set next=next2 )
if %testwell% gtr 0 echo . & echo Next is %next% & pause
  endlocal & set "%~1=%next%"
  exit /b %errorlevel%
 
 
::: See :padder error for the call.
:next1 <string result, string sender>
  setlocal & set "sender=%~2"
  echo . & set line1=This error was detected from the Silent_mode.bat Code File.
  set chars2Pad=+=:=-
  call %util3% t :middleman "%chars2Pad%" "%line1%"
  set "result=The Padder in Util3 has FAILED."
  endlocal & set "%~1=%result%"
  exit /b %errorlevel%
 
 
::: DEVELOPING Next & as needed below. (A called function)
:next2 <string result2return, string sender>
  setlocal & set "sender=%~2"
  set msg2=The error was detected in %sender% on %date% @ %time%
  set chars1=-=*=/\
    ::: v8.7.0.09 20231106063214 by -JpE-
    call %util3% t :middleman "%chars1%" "%msg2%"
    ::: Saves lines, is easy to link, and reliable.
    ::: Change the text w/o worry of adjusting the display!
  ::: Reuses existing functions that are also stand-alone.
  ::: It makes the line reverses the chars and calculates the spacing on each side to center it in whatev chars are used!
  :::::::::::::::::::::::::::::::::::::::::
  ::: Design to save to nFo 2log file.  :::
  :::::::::::::::::::::::::::::::::::::::::
  
  set msg3=Now we have hit the next2 function!
  set chars2=-=_=-/\
  REM set chars2=-=*  
    call %util3% t :middleman "%chars2%" "%msg3%"
  set "result=I'm not sure what this will do."
  endlocal & set "%~1=%result%"
  exit /b %errorlevel%
 
 
::: Early Design Phase Only, down here. Experimenting. Flesh Out if Used.
:nothingSent
  echo . & echo Nothing THERE-ERROR! & echo . & pause & echo .
 
 
  goto return
REM ::: ^ UNDER CONSTRUCTION (Layout only)
 
 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::: Design more where handling depending on their usages. :::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
 
 
:return
REM :: TESTCODE
if %testwell% gtr 2 echo . & echo The End of ErrorHandling module. & echo . & pause & echo .
 
 
 
  ::: 100% -JpE-
 
 
 
 

Comments