Files
claudetools/STAGE.BAT
Mike Swanson f9c3a5d3a9 debug: Add parameter debugging and remove redundant PAUSE messages
Changes:
1. Added DEBUG output at script start to show %1 and %2 parameters
2. Removed 46 redundant "ECHO Press any key..." lines before PAUSE
   - DOS 6.22 PAUSE command already displays this message
   - No need for custom echo with same text

Debug output will show:
  DEBUG: Parameter 1 = [value]
  DEBUG: Parameter 2 = [value]

This will help diagnose why machine name parameter is not being
received when running: T:\DEPLOY.BAT TS-4R

Files modified:
- DEPLOY.BAT: Added debug lines 18-22, removed 10 ECHO lines
- UPDATE.BAT: Removed 7 ECHO lines
- CTONW.BAT: Removed 8 ECHO lines
- NWTOC.BAT: Removed 6 ECHO lines
- REBOOT.BAT: Removed 4 ECHO lines
- STAGE.BAT: Removed 6 ECHO lines
- CHECKUPD.BAT: Removed 2 ECHO lines
- DOSTEST.BAT: Removed 2 ECHO lines
- AUTOEXEC.BAT: Removed 1 ECHO line

Deployed to D2TESTNAS: /data/test/DEPLOY.BAT

Next test: Run T:\DEPLOY.BAT TS-4R and check DEBUG output

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-19 17:22:58 -07:00

246 lines
8.3 KiB
Batchfile

@ECHO OFF
REM STAGE.BAT - Stage system files for update after reboot
REM Called by NWTOC.BAT when AUTOEXEC.NEW or CONFIG.NEW are detected
REM
REM This script:
REM 1. Verifies staged files exist (C:\AUTOEXEC.NEW, C:\CONFIG.NEW)
REM 2. Backs up current AUTOEXEC.BAT to C:\AUTOEXEC.SAV
REM 3. Creates REBOOT.BAT to apply changes after reboot
REM 4. Modifies AUTOEXEC.BAT to call REBOOT.BAT once on next boot
REM 5. Instructs user to reboot
REM
REM Version: 1.0 - DOS 6.22 compatible
REM Last modified: 2026-01-19
REM ==================================================================
REM STEP 1: Verify staged files exist
REM ==================================================================
SET HASAUTO=0
SET HASCONF=0
IF EXIST C:\AUTOEXEC.NEW SET HASAUTO=1
IF EXIST C:\CONFIG.NEW SET HASCONF=1
REM Check if any updates need staging
IF "%HASAUTO%"=="0" IF "%HASCONF%"=="0" GOTO NO_UPDATES
ECHO.
ECHO ==============================================================
ECHO Staging System File Updates
ECHO ==============================================================
IF "%HASAUTO%"=="1" ECHO [STAGED] C:\AUTOEXEC.NEW ??? Will replace AUTOEXEC.BAT
IF "%HASCONF%"=="1" ECHO [STAGED] C:\CONFIG.NEW ??? Will replace CONFIG.SYS
ECHO ==============================================================
ECHO.
REM ==================================================================
REM STEP 2: Backup current AUTOEXEC.BAT
REM ==================================================================
ECHO [1/3] Backing up current system files...
REM Check if AUTOEXEC.BAT exists
IF NOT EXIST C:\AUTOEXEC.BAT GOTO NO_AUTOEXEC
REM Create backup
COPY C:\AUTOEXEC.BAT C:\AUTOEXEC.SAV >NUL
IF ERRORLEVEL 1 GOTO BACKUP_ERROR
ECHO [OK] C:\AUTOEXEC.BAT ??? C:\AUTOEXEC.SAV
REM Also backup CONFIG.SYS if it exists
IF EXIST C:\CONFIG.SYS COPY C:\CONFIG.SYS C:\CONFIG.SAV >NUL
IF EXIST C:\CONFIG.SYS IF NOT ERRORLEVEL 1 ECHO [OK] C:\CONFIG.SYS ??? C:\CONFIG.SAV
ECHO.
REM ==================================================================
REM STEP 3: Create REBOOT.BAT
REM ==================================================================
ECHO [2/3] Creating reboot update script...
REM Create C:\BAT directory if it doesn't exist
IF NOT EXIST C:\BAT\NUL MD C:\BAT
REM Create REBOOT.BAT - this runs once after reboot
ECHO @ECHO OFF > C:\BAT\REBOOT.BAT
ECHO REM REBOOT.BAT - Apply staged system updates (AUTO-GENERATED) >> C:\BAT\REBOOT.BAT
ECHO REM This file is automatically deleted after running >> C:\BAT\REBOOT.BAT
ECHO. >> C:\BAT\REBOOT.BAT
ECHO ECHO. >> C:\BAT\REBOOT.BAT
ECHO ECHO ============================================================== >> C:\BAT\REBOOT.BAT
ECHO ECHO Applying System Updates >> C:\BAT\REBOOT.BAT
ECHO ECHO ============================================================== >> C:\BAT\REBOOT.BAT
ECHO ECHO. >> C:\BAT\REBOOT.BAT
ECHO. >> C:\BAT\REBOOT.BAT
REM Apply AUTOEXEC.NEW if it exists
IF "%HASAUTO%"=="1" ECHO IF EXIST C:\AUTOEXEC.NEW ECHO [1/2] Updating AUTOEXEC.BAT... >> C:\BAT\REBOOT.BAT
IF "%HASAUTO%"=="1" ECHO IF EXIST C:\AUTOEXEC.NEW COPY C:\AUTOEXEC.NEW C:\AUTOEXEC.BAT ^>NUL >> C:\BAT\REBOOT.BAT
IF "%HASAUTO%"=="1" ECHO IF EXIST C:\AUTOEXEC.NEW IF NOT ERRORLEVEL 1 ECHO [OK] AUTOEXEC.BAT updated >> C:\BAT\REBOOT.BAT
IF "%HASAUTO%"=="1" ECHO IF EXIST C:\AUTOEXEC.NEW IF ERRORLEVEL 1 ECHO [ERROR] AUTOEXEC.BAT update failed >> C:\BAT\REBOOT.BAT
IF "%HASAUTO%"=="1" ECHO IF EXIST C:\AUTOEXEC.NEW DEL C:\AUTOEXEC.NEW >> C:\BAT\REBOOT.BAT
IF "%HASAUTO%"=="1" ECHO ECHO. >> C:\BAT\REBOOT.BAT
REM Apply CONFIG.NEW if it exists
IF "%HASCONF%"=="1" ECHO IF EXIST C:\CONFIG.NEW ECHO [2/2] Updating CONFIG.SYS... >> C:\BAT\REBOOT.BAT
IF "%HASCONF%"=="1" ECHO IF EXIST C:\CONFIG.NEW COPY C:\CONFIG.NEW C:\CONFIG.SYS ^>NUL >> C:\BAT\REBOOT.BAT
IF "%HASCONF%"=="1" ECHO IF EXIST C:\CONFIG.NEW IF NOT ERRORLEVEL 1 ECHO [OK] CONFIG.SYS updated >> C:\BAT\REBOOT.BAT
IF "%HASCONF%"=="1" ECHO IF EXIST C:\CONFIG.NEW IF ERRORLEVEL 1 ECHO [ERROR] CONFIG.SYS update failed >> C:\BAT\REBOOT.BAT
IF "%HASCONF%"=="1" ECHO IF EXIST C:\CONFIG.NEW DEL C:\CONFIG.NEW >> C:\BAT\REBOOT.BAT
IF "%HASCONF%"=="1" ECHO ECHO. >> C:\BAT\REBOOT.BAT
REM Delete REBOOT.BAT after running
ECHO ECHO ============================================================== >> C:\BAT\REBOOT.BAT
ECHO ECHO System Updates Applied >> C:\BAT\REBOOT.BAT
ECHO ECHO ============================================================== >> C:\BAT\REBOOT.BAT
ECHO ECHO. >> C:\BAT\REBOOT.BAT
ECHO ECHO Rollback files available: >> C:\BAT\REBOOT.BAT
ECHO ECHO C:\AUTOEXEC.SAV - Previous AUTOEXEC.BAT >> C:\BAT\REBOOT.BAT
ECHO ECHO C:\CONFIG.SAV - Previous CONFIG.SYS >> C:\BAT\REBOOT.BAT
ECHO ECHO. >> C:\BAT\REBOOT.BAT
ECHO ECHO To rollback, run: >> C:\BAT\REBOOT.BAT
ECHO ECHO COPY C:\AUTOEXEC.SAV C:\AUTOEXEC.BAT >> C:\BAT\REBOOT.BAT
ECHO ECHO COPY C:\CONFIG.SAV C:\CONFIG.SYS >> C:\BAT\REBOOT.BAT
ECHO ECHO. >> C:\BAT\REBOOT.BAT
ECHO PAUSE Press any key to continue boot... >> C:\BAT\REBOOT.BAT
ECHO. >> C:\BAT\REBOOT.BAT
ECHO REM Delete this script >> C:\BAT\REBOOT.BAT
ECHO DEL C:\BAT\REBOOT.BAT >> C:\BAT\REBOOT.BAT
IF NOT EXIST C:\BAT\REBOOT.BAT GOTO CREATE_ERROR
ECHO [OK] C:\BAT\REBOOT.BAT created
ECHO.
REM ==================================================================
REM STEP 4: Modify AUTOEXEC.BAT to call REBOOT.BAT once
REM ==================================================================
ECHO [3/3] Modifying AUTOEXEC.BAT for one-time reboot update...
REM Create temporary file with REBOOT.BAT call at the top
ECHO @ECHO OFF > C:\AUTOEXEC.TMP
ECHO REM One-time system update on next reboot >> C:\AUTOEXEC.TMP
ECHO IF EXIST C:\BAT\REBOOT.BAT CALL C:\BAT\REBOOT.BAT >> C:\AUTOEXEC.TMP
ECHO. >> C:\AUTOEXEC.TMP
REM Append current AUTOEXEC.BAT contents (skip first @ECHO OFF line)
REM DOS 6.22: Use TYPE and redirect (simple copy preserves all lines)
TYPE C:\AUTOEXEC.BAT >> C:\AUTOEXEC.TMP
REM Replace AUTOEXEC.BAT with modified version
COPY C:\AUTOEXEC.TMP C:\AUTOEXEC.BAT >NUL
IF ERRORLEVEL 1 GOTO MODIFY_ERROR
REM Clean up temporary file
DEL C:\AUTOEXEC.TMP
ECHO [OK] AUTOEXEC.BAT modified to run update on next boot
ECHO.
REM ==================================================================
REM STEP 5: Instruct user to reboot
REM ==================================================================
ECHO ==============================================================
ECHO REBOOT REQUIRED
ECHO ==============================================================
ECHO.
ECHO System files have been staged for update.
ECHO.
ECHO On next boot, AUTOEXEC.BAT will automatically:
ECHO 1. Apply AUTOEXEC.NEW and/or CONFIG.NEW
ECHO 2. Delete staging files
ECHO 3. Continue normal boot
ECHO.
ECHO To apply updates now:
ECHO 1. Press Ctrl+Alt+Del to reboot
ECHO 2. Or type: EXIT and reboot from DOS prompt
ECHO.
ECHO To cancel update:
ECHO 1. Delete C:\AUTOEXEC.NEW
ECHO 2. Delete C:\CONFIG.NEW
ECHO 3. Delete C:\BAT\REBOOT.BAT
ECHO 4. Restore C:\AUTOEXEC.BAT from C:\AUTOEXEC.SAV
ECHO.
ECHO ==============================================================
ECHO.
PAUSE
GOTO END
REM ==================================================================
REM ERROR HANDLERS
REM ==================================================================
:NO_UPDATES
ECHO.
ECHO [WARNING] No staged update files found
ECHO.
ECHO Expected files:
ECHO C:\AUTOEXEC.NEW (not found)
ECHO C:\CONFIG.NEW (not found)
ECHO.
ECHO Run NWTOC to download updates from network.
ECHO.
PAUSE
GOTO END
:NO_AUTOEXEC
ECHO.
ECHO [ERROR] C:\AUTOEXEC.BAT not found
ECHO.
ECHO Cannot stage updates without existing AUTOEXEC.BAT
ECHO.
PAUSE
GOTO END
:BACKUP_ERROR
ECHO.
ECHO [ERROR] Failed to create backup
ECHO.
ECHO Could not copy C:\AUTOEXEC.BAT to C:\AUTOEXEC.SAV
ECHO.
ECHO Check:
ECHO - Sufficient disk space on C:
ECHO - C: drive is not write-protected
ECHO.
PAUSE
GOTO END
:CREATE_ERROR
ECHO.
ECHO [ERROR] Failed to create C:\BAT\REBOOT.BAT
ECHO.
ECHO Check:
ECHO - C:\BAT directory exists
ECHO - Sufficient disk space on C:
ECHO - C: drive is not write-protected
ECHO.
PAUSE
GOTO END
:MODIFY_ERROR
ECHO.
ECHO [ERROR] Failed to modify AUTOEXEC.BAT
ECHO.
ECHO AUTOEXEC.BAT may be corrupted!
ECHO.
ECHO Recovery:
ECHO COPY C:\AUTOEXEC.SAV C:\AUTOEXEC.BAT
ECHO.
PAUSE
GOTO END
REM ==================================================================
REM CLEANUP AND EXIT
REM ==================================================================
:END
REM Clean up environment variables
SET HASAUTO=
SET HASCONF=