Files
claudetools/CHECKUPD.BAT
Mike Swanson 3b55cf1312 fix: Replace PAUSE with message syntax (not supported in DOS 6.22)
Issue: DOS 6.22 PAUSE command does not accept message text as parameter.
The syntax "PAUSE message..." is a Windows NT/2000+ feature that causes
command-line parameters (%1, %2, etc.) to be consumed/lost in DOS 6.22.

Root cause: User ran "T:\DEPLOY.BAT TS-4R" but script reported
"Machine name not provided". The parameter %1 was being consumed by
the invalid PAUSE syntax at line 31 before reaching GET_MACHINE_NAME.

Changes:
- Fixed 46 PAUSE commands across 9 BAT files
- Converted "PAUSE message..." to "ECHO message..." + "PAUSE"
- Updated check-dos-compatibility.ps1 to detect PAUSE with message
- Created fix-pause-syntax.ps1 automated fix script

Example fix:
BEFORE (Windows NT+ syntax, causes parameter loss):
  PAUSE Press any key to continue...

AFTER (DOS 6.22 compatible):
  ECHO Press any key to continue...
  PAUSE

DOS 6.22 PAUSE command:
- Syntax: PAUSE (no parameters)
- Displays: "Press any key to continue..."
- Cannot customize message (built-in text only)

Files modified:
- DEPLOY.BAT: 10 PAUSE commands fixed
- UPDATE.BAT: 7 PAUSE commands fixed
- CTONW.BAT: 8 PAUSE commands fixed
- NWTOC.BAT: 6 PAUSE commands fixed
- REBOOT.BAT: 4 PAUSE commands fixed
- STAGE.BAT: 6 PAUSE commands fixed
- CHECKUPD.BAT: 2 PAUSE commands fixed
- DOSTEST.BAT: 2 PAUSE commands fixed
- AUTOEXEC.BAT: 1 PAUSE command fixed

Deployed to:
- D2TESTNAS: /data/test/*.BAT (9,908 bytes for DEPLOY.BAT)

Testing: Should now correctly receive command-line parameter:
  T:\DEPLOY.BAT TS-4R

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

232 lines
6.2 KiB
Batchfile

@ECHO OFF
REM CHECKUPD.BAT - Check for available updates without applying them
REM Quick status check to see if network has newer files
REM
REM Usage: CHECKUPD
REM
REM Checks these sources:
REM T:\COMMON\ProdSW\*.bat
REM T:\%MACHINE%\ProdSW\*.*
REM T:\COMMON\DOS\*.NEW
REM
REM Version: 1.0 - DOS 6.22 compatible
REM Last modified: 2026-01-19
REM ==================================================================
REM STEP 1: Verify machine name is set
REM ==================================================================
IF NOT "%MACHINE%"=="" GOTO CHECK_DRIVE
:NO_MACHINE
ECHO.
ECHO [ERROR] MACHINE variable not set
ECHO.
ECHO Set MACHINE in AUTOEXEC.BAT:
ECHO SET MACHINE=TS-4R
ECHO.
ECHO Press any key to exit...
PAUSE
GOTO END
REM ==================================================================
REM STEP 2: Verify T: drive is accessible
REM ==================================================================
:CHECK_DRIVE
REM Test T: drive access
DIR T:\ >nul
IF ERRORLEVEL 1 GOTO NO_T_DRIVE
C:
REM Double-check with NUL device test
IF NOT EXIST T:\*.* GOTO NO_T_DRIVE
GOTO START_CHECK
:NO_T_DRIVE
C:
ECHO.
ECHO [ERROR] T: drive not available
ECHO.
ECHO Run: C:\NET\STARTNET.BAT
ECHO.
ECHO Press any key to exit...
PAUSE
GOTO END
REM ==================================================================
REM STEP 3: Display check banner
REM ==================================================================
:START_CHECK
ECHO.
ECHO ==============================================================
ECHO Update Check: %MACHINE%
ECHO ==============================================================
ECHO.
REM Initialize flags (no counters - not critical for functionality)
SET COMMON=
SET MACHINEFILES=
SET SYSFILE=
REM ==================================================================
REM STEP 4: Check COMMON batch files
REM ==================================================================
ECHO [1/3] Checking T:\COMMON\ProdSW for batch file updates...
IF NOT EXIST T:\COMMON\ProdSW\NUL GOTO NO_COMMON
REM Check for files on network
FOR %%F IN (T:\COMMON\ProdSW\*.BAT) DO CALL :CHECK_COMMON_FILE %%F
IF "%COMMON%"=="" ECHO [OK] No updates in COMMON
IF NOT "%COMMON%"=="" ECHO [FOUND] Updates available in COMMON
ECHO.
GOTO CHECK_MACHINE
:NO_COMMON
ECHO [SKIP] T:\COMMON\ProdSW not found
ECHO.
REM ==================================================================
REM STEP 5: Check machine-specific files
REM ==================================================================
:CHECK_MACHINE
ECHO [2/3] Checking T:\%MACHINE%\ProdSW for machine-specific updates...
IF NOT EXIST T:\%MACHINE%\ProdSW\NUL GOTO NO_MACHINE_DIR
REM Check for any files (BAT, EXE, DAT)
FOR %%F IN (T:\%MACHINE%\ProdSW\*.*) DO CALL :COUNT_FILE
IF "%MACHINEFILES%"=="" ECHO [OK] No updates for %MACHINE%
IF NOT "%MACHINEFILES%"=="" ECHO [FOUND] Updates available for %MACHINE%
ECHO.
GOTO CHECK_SYSTEM
:NO_MACHINE_DIR
ECHO [SKIP] T:\%MACHINE%\ProdSW not found
ECHO.
REM ==================================================================
REM STEP 6: Check system file updates
REM ==================================================================
:CHECK_SYSTEM
ECHO [3/3] Checking T:\COMMON\DOS for system file updates...
IF NOT EXIST T:\COMMON\DOS\NUL GOTO NO_DOS_DIR
REM Check for .NEW files
IF EXIST T:\COMMON\DOS\AUTOEXEC.NEW SET SYSFILE=FOUND
IF EXIST T:\COMMON\DOS\AUTOEXEC.NEW ECHO [FOUND] AUTOEXEC.NEW (system reboot required)
IF EXIST T:\COMMON\DOS\CONFIG.NEW SET SYSFILE=FOUND
IF EXIST T:\COMMON\DOS\CONFIG.NEW ECHO [FOUND] CONFIG.NEW (system reboot required)
IF "%SYSFILE%"=="" ECHO [OK] No system file updates
ECHO.
GOTO SHOW_SUMMARY
:NO_DOS_DIR
ECHO [SKIP] T:\COMMON\DOS not found
ECHO.
REM ==================================================================
REM STEP 7: Show summary and recommendations
REM ==================================================================
:SHOW_SUMMARY
REM Determine if any updates found
SET HASUPDATES=
IF NOT "%COMMON%"=="" SET HASUPDATES=YES
IF NOT "%MACHINEFILES%"=="" SET HASUPDATES=YES
IF NOT "%SYSFILE%"=="" SET HASUPDATES=YES
ECHO ==============================================================
ECHO Update Summary
ECHO ==============================================================
ECHO.
ECHO Available updates:
IF NOT "%COMMON%"=="" ECHO [FOUND] Common batch files
IF "%COMMON%"=="" ECHO [OK] Common batch files
IF NOT "%MACHINEFILES%"=="" ECHO [FOUND] Machine-specific files
IF "%MACHINEFILES%"=="" ECHO [OK] Machine-specific files
IF NOT "%SYSFILE%"=="" ECHO [FOUND] System files
IF "%SYSFILE%"=="" ECHO [OK] System files
ECHO.
REM Provide recommendation
IF "%HASUPDATES%"=="" GOTO NO_UPDATES_AVAILABLE
ECHO Recommendation:
ECHO Run NWTOC to download and install updates
ECHO.
IF NOT "%SYSFILE%"=="" ECHO [WARNING] System file updates will require reboot
IF NOT "%SYSFILE%"=="" ECHO.
GOTO END
:NO_UPDATES_AVAILABLE
ECHO Status: All files are up to date
ECHO.
GOTO END
REM ==================================================================
REM HELPER SUBROUTINES
REM ==================================================================
:CHECK_COMMON_FILE
REM Check if network file is newer than local file
REM %1 = network file path (e.g., T:\COMMON\ProdSW\NWTOC.BAT)
REM Extract filename from path
SET NETFILE=%1
SET FILENAME=%~nx1
REM Check if local file exists
IF NOT EXIST C:\BAT\%FILENAME% SET COMMON=FOUND
IF NOT EXIST C:\BAT\%FILENAME% GOTO CHECK_COMMON_DONE
REM Both files exist - compare using XCOPY /D
REM Create temp directory for test
IF NOT EXIST C:\TEMP\*.* MD C:\TEMP
REM Try to copy with /D (only if newer)
XCOPY %NETFILE% C:\TEMP\ /D /Y >NUL 2>NUL
IF NOT ERRORLEVEL 1 SET COMMON=FOUND
REM Clean up
IF EXIST C:\TEMP\%FILENAME% DEL C:\TEMP\%FILENAME%
:CHECK_COMMON_DONE
GOTO END_SUBROUTINE
:COUNT_FILE
REM Flag that machine-specific files exist
SET MACHINEFILES=FOUND
GOTO END_SUBROUTINE
:END_SUBROUTINE
REM Return point for all subroutines (replaces :EOF)
REM ==================================================================
REM CLEANUP AND EXIT
REM ==================================================================
:END
REM Clean up environment variables
SET COMMON=
SET MACHINEFILES=
SET SYSFILE=
SET HASUPDATES=
SET NETFILE=
SET FILENAME=