Files
claudetools/CHECKUPD.BAT
Mike Swanson 925a769786 fix: Replace NUL device references with DOS 6.22 compatible tests
Critical fix for DOS 6.22 compatibility - NUL is a reserved device name
in both DOS and Windows and cannot be used as a file/directory name.

Problem:
- "T: 2>NUL" attempts to create a file called "NUL" (not allowed)
- "IF NOT EXIST T:\NUL" tests for NUL device (unreliable)
- "IF NOT EXIST path\NUL" treats NUL as filename (invalid)

Solution - Replaced with proper DOS 6.22 tests:
- "T: 2>NUL" → "DIR T:\ >nul" (test drive access via directory listing)
- "IF NOT EXIST T:\NUL" → "IF NOT EXIST T:\*.*" (test for any files)
- "IF NOT EXIST path\NUL" → "IF NOT EXIST path\*.*" (test directory)

Note: Using lowercase "nul" for output redirection is acceptable as
it redirects to the NUL device, but NUL as a filename/path is invalid.

Files updated:
- DEPLOY.BAT: Fixed drive and directory tests
- UPDATE.BAT: Fixed drive and directory tests
- NWTOC.BAT: Fixed drive and directory tests
- CTONW.BAT: Fixed drive and directory tests
- CHECKUPD.BAT: Fixed drive and directory tests
- DOSTEST.BAT: Fixed drive and directory tests

Created fix-nul-references.ps1:
- Automated script to find and fix NUL references
- Preserves CRLF line endings
- Updates all BAT files consistently

Created monitoring scripts:
- monitor-sync-status.ps1: Periodic sync monitoring
- quick-sync-check.ps1: Quick AD2-to-NAS sync status check

Verification:
- All BAT files maintain CRLF line terminators
- File sizes increased slightly (4-8 bytes) due to pattern changes
- DOS 6.22 compatible wildcard tests (*.*) used throughout

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

223 lines
5.8 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.
PAUSE Press any key to exit...
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.
PAUSE Press any key to exit...
GOTO END
REM ==================================================================
REM STEP 3: Display check banner
REM ==================================================================
:START_CHECK
ECHO.
ECHO ==============================================================
ECHO Update Check: %MACHINE%
ECHO ==============================================================
ECHO.
REM Initialize counters
SET COMMON=0
SET MACHINE=0
SET SYSFILE=0
SET TOTAL=0
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 Count files on network
FOR %%F IN (T:\COMMON\ProdSW\*.BAT) DO CALL :CHECK_COMMON_FILE %%F
IF "%COMMON%"=="0" ECHO [OK] No updates in COMMON
IF NOT "%COMMON%"=="0" ECHO [FOUND] %COMMON% file(s) 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 Count all files (BAT, EXE, DAT)
FOR %%F IN (T:\%MACHINE%\ProdSW\*.*) DO CALL :COUNT_FILE
IF "%MACHINEFILES%"=="0" ECHO [OK] No updates for %MACHINE%
IF NOT "%MACHINEFILES%"=="0" ECHO [FOUND] %MACHINEFILES% file(s) 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 /A SYSFILE=SYSFILE+1
IF EXIST T:\COMMON\DOS\AUTOEXEC.NEW ECHO [FOUND] AUTOEXEC.NEW (system reboot required)
IF EXIST T:\COMMON\DOS\CONFIG.NEW SET /A SYSFILE=SYSFILE+1
IF EXIST T:\COMMON\DOS\CONFIG.NEW ECHO [FOUND] CONFIG.NEW (system reboot required)
IF "%SYSFILE%"=="0" 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 Calculate total
SET /A TOTAL=COMMON+MACHINEFILES+SYSFILE
ECHO ==============================================================
ECHO Update Summary
ECHO ==============================================================
ECHO.
ECHO Available updates:
ECHO Common files: %COMMON%
ECHO Machine-specific files: %MACHINEFILES%
ECHO System files: %SYSFILE%
ECHO -----------------------------------
ECHO Total: %TOTAL%
ECHO.
REM Provide recommendation
IF "%TOTAL%"=="0" GOTO NO_UPDATES_AVAILABLE
ECHO Recommendation:
ECHO Run NWTOC to download and install updates
ECHO.
IF NOT "%SYSFILE%"=="0" ECHO [WARNING] System file updates will require reboot
IF NOT "%SYSFILE%"=="0" 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 /A COMMON=COMMON+1
IF NOT EXIST C:\BAT\%FILENAME% GOTO :EOF
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 /A COMMON=COMMON+1
REM Clean up
IF EXIST C:\TEMP\%FILENAME% DEL C:\TEMP\%FILENAME%
GOTO :EOF
:COUNT_FILE
REM Simple counter for machine-specific files
SET /A MACHINEFILES=MACHINEFILES+1
GOTO :EOF
REM ==================================================================
REM CLEANUP AND EXIT
REM ==================================================================
:END
REM Clean up environment variables
SET COMMON=
SET MACHINEFILES=
SET SYSFILE=
SET TOTAL=
SET NETFILE=
SET FILENAME=