From 3b55cf1312ba547cb5380f95cbd8dfa9f2f6ef35 Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Mon, 19 Jan 2026 17:19:44 -0700 Subject: [PATCH] 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 --- AUTOEXEC.BAT | 3 +- CHECKUPD.BAT | 6 ++-- CTONW.BAT | 24 ++++++++++----- DEPLOY.BAT | 30 ++++++++++++------ DOSTEST.BAT | 6 ++-- NWTOC.BAT | 18 +++++++---- REBOOT.BAT | 12 +++++--- STAGE.BAT | 18 +++++++---- UPDATE.BAT | 21 ++++++++----- check-dos-compatibility.ps1 | 1 + fix-pause-syntax.ps1 | 61 +++++++++++++++++++++++++++++++++++++ 11 files changed, 154 insertions(+), 46 deletions(-) create mode 100644 fix-pause-syntax.ps1 diff --git a/AUTOEXEC.BAT b/AUTOEXEC.BAT index 20a9f07..5c25b42 100644 --- a/AUTOEXEC.BAT +++ b/AUTOEXEC.BAT @@ -66,7 +66,8 @@ ECHO. ECHO To start network manually, run: ECHO C:\NET\STARTNET.BAT ECHO. -PAUSE Press any key to continue... +ECHO Press any key to continue... +PAUSE GOTO SKIP_BACKUP REM ================================================================== diff --git a/CHECKUPD.BAT b/CHECKUPD.BAT index c6fba61..d9e49f2 100644 --- a/CHECKUPD.BAT +++ b/CHECKUPD.BAT @@ -25,7 +25,8 @@ ECHO. ECHO Set MACHINE in AUTOEXEC.BAT: ECHO SET MACHINE=TS-4R ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -49,7 +50,8 @@ ECHO [ERROR] T: drive not available ECHO. ECHO Run: C:\NET\STARTNET.BAT ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== diff --git a/CTONW.BAT b/CTONW.BAT index 6d5db50..83e1d38 100644 --- a/CTONW.BAT +++ b/CTONW.BAT @@ -36,7 +36,8 @@ ECHO Then reboot or run: ECHO SET MACHINE=TS-4R ECHO CTONW ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -69,7 +70,8 @@ ECHO. ECHO Or map manually: ECHO NET USE T: \\D2TESTNAS\test /YES ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -120,7 +122,8 @@ ECHO. ECHO No files were uploaded to COMMON. ECHO To upload to machine-specific location, run: CTONW ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -152,7 +155,8 @@ ECHO [ERROR] C:\BAT directory not found ECHO. ECHO No files to upload. ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -313,7 +317,8 @@ ECHO - Sufficient disk space on T: ECHO - Network connection is stable ECHO - Permissions to create directories ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :LOGS_DIR_ERROR @@ -327,7 +332,8 @@ ECHO - Sufficient disk space on T: ECHO - Network connection is stable ECHO - Permissions to create directories ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :UPLOAD_ERROR_INIT @@ -340,7 +346,8 @@ ECHO - Invalid path ECHO - Target drive not accessible ECHO - Network connection lost ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :UPLOAD_ERROR_USER @@ -350,7 +357,8 @@ ECHO. ECHO Upload may be incomplete! ECHO Run CTONW again to complete upload. ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== diff --git a/DEPLOY.BAT b/DEPLOY.BAT index 4f1599f..6b557d4 100644 --- a/DEPLOY.BAT +++ b/DEPLOY.BAT @@ -29,7 +29,8 @@ ECHO - STAGE.BAT (System file staging) ECHO - REBOOT.BAT (Apply updates on reboot) ECHO - CHECKUPD.BAT (Check for updates) ECHO. -PAUSE Press any key to continue... +ECHO Press any key to continue... +PAUSE ECHO. REM ================================================================== @@ -65,7 +66,8 @@ ECHO NET USE T: \\D2TESTNAS\test /YES ECHO. ECHO Then run DEPLOY.BAT again. ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -101,7 +103,8 @@ ECHO - CHECKUPD.BAT ECHO. ECHO Contact system administrator. ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -137,7 +140,8 @@ ECHO. ECHO Machine name must match folder on T: drive. ECHO Example: If this is TS-4R, T:\TS-4R\ must exist ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :MACHINE_FOLDER_ERROR @@ -149,7 +153,8 @@ ECHO - T: drive is writable ECHO - Network connection is stable ECHO - Permissions to create directories ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -221,7 +226,8 @@ GOTO UPDATE_AUTOEXEC ECHO. ECHO [ERROR] Could not create C:\BAT directory ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :COPY_ERROR @@ -233,7 +239,8 @@ ECHO - T: drive is accessible ECHO - C: drive has free space ECHO - No file locks on C:\BAT\ ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -277,7 +284,8 @@ ECHO 2. Find line: SET MACHINE=... ECHO 3. Change to: SET MACHINE=%MACHINE% ECHO 4. Save and reboot ECHO. -PAUSE Press any key to continue... +ECHO Press any key to continue... +PAUSE GOTO DEPLOYMENT_COMPLETE :AUTOEXEC_ERROR @@ -287,7 +295,8 @@ ECHO. ECHO You must manually add this line to C:\AUTOEXEC.BAT: ECHO SET MACHINE=%MACHINE% ECHO. -PAUSE Press any key to continue... +ECHO Press any key to continue... +PAUSE GOTO DEPLOYMENT_COMPLETE REM ================================================================== @@ -339,7 +348,8 @@ ECHO Machine: %MACHINE% >> T:\%MACHINE%\DEPLOY.LOG ECHO Files installed to: C:\BAT\ >> T:\%MACHINE%\DEPLOY.LOG ECHO AUTOEXEC.BAT backup: C:\AUTOEXEC.SAV >> T:\%MACHINE%\DEPLOY.LOG -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== diff --git a/DOSTEST.BAT b/DOSTEST.BAT index c39ce7b..d228bc4 100644 --- a/DOSTEST.BAT +++ b/DOSTEST.BAT @@ -24,7 +24,8 @@ GOTO TEST2 ECHO [FAIL] MACHINE variable not set ECHO Fix: Add "SET MACHINE=TS-4R" to C:\AUTOEXEC.BAT ECHO. -PAUSE Press any key to continue testing... +ECHO Press any key to continue testing... +PAUSE GOTO TEST2 REM ================================================================== @@ -197,4 +198,5 @@ ECHO. :END ECHO ============================================================== ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE diff --git a/NWTOC.BAT b/NWTOC.BAT index ce2b474..8311b23 100644 --- a/NWTOC.BAT +++ b/NWTOC.BAT @@ -29,7 +29,8 @@ ECHO Then reboot or run: ECHO SET MACHINE=TS-4R ECHO NWTOC ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -62,7 +63,8 @@ ECHO. ECHO Or map manually: ECHO NET USE T: \\D2TESTNAS\test /YES ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -98,7 +100,8 @@ ECHO. ECHO Network share structure is incorrect. ECHO Expected: T:\COMMON\ProdSW\ ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :NO_PRODSW @@ -107,7 +110,8 @@ ECHO. ECHO Update directory is missing. ECHO Expected: T:\COMMON\ProdSW\*.bat ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :SKIP_MACHINE_CHECK @@ -276,7 +280,8 @@ ECHO - Insufficient memory ECHO - Invalid path ECHO - Target drive not accessible ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :UPDATE_ERROR_USER @@ -286,7 +291,8 @@ ECHO. ECHO Update may be incomplete! ECHO Run NWTOC again to complete update. ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== diff --git a/REBOOT.BAT b/REBOOT.BAT index 866a2ad..d552bcf 100644 --- a/REBOOT.BAT +++ b/REBOOT.BAT @@ -43,7 +43,8 @@ ECHO. ECHO Backups will be saved as .SAV files. ECHO. ECHO Press Ctrl+C to cancel, or -PAUSE Press any key to continue... +ECHO Press any key to continue... +PAUSE ECHO. REM ================================================================== @@ -118,7 +119,8 @@ ECHO Then reboot ECHO. ECHO ============================================================== ECHO. -PAUSE Press any key to continue... +ECHO Press any key to continue... +PAUSE GOTO END REM ================================================================== @@ -135,7 +137,8 @@ ECHO. ECHO Run NWTOC to download updates from network, then: ECHO CALL C:\BAT\STAGE.BAT ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :UPDATE_ERROR @@ -154,7 +157,8 @@ ECHO 1. Boot from DOS floppy ECHO 2. Copy .SAV files back to .BAT and .SYS ECHO 3. Remove floppy and reboot ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== diff --git a/STAGE.BAT b/STAGE.BAT index 485705d..2b553a9 100644 --- a/STAGE.BAT +++ b/STAGE.BAT @@ -169,7 +169,8 @@ ECHO 4. Restore C:\AUTOEXEC.BAT from C:\AUTOEXEC.SAV ECHO. ECHO ============================================================== ECHO. -PAUSE Press any key to return to DOS... +ECHO Press any key to return to DOS... +PAUSE GOTO END REM ================================================================== @@ -186,7 +187,8 @@ ECHO C:\CONFIG.NEW (not found) ECHO. ECHO Run NWTOC to download updates from network. ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :NO_AUTOEXEC @@ -195,7 +197,8 @@ ECHO [ERROR] C:\AUTOEXEC.BAT not found ECHO. ECHO Cannot stage updates without existing AUTOEXEC.BAT ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :BACKUP_ERROR @@ -208,7 +211,8 @@ ECHO Check: ECHO - Sufficient disk space on C: ECHO - C: drive is not write-protected ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :CREATE_ERROR @@ -220,7 +224,8 @@ ECHO - C:\BAT directory exists ECHO - Sufficient disk space on C: ECHO - C: drive is not write-protected ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :MODIFY_ERROR @@ -232,7 +237,8 @@ ECHO. ECHO Recovery: ECHO COPY C:\AUTOEXEC.SAV C:\AUTOEXEC.BAT ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== diff --git a/UPDATE.BAT b/UPDATE.BAT index eae7848..5915bf9 100644 --- a/UPDATE.BAT +++ b/UPDATE.BAT @@ -26,7 +26,8 @@ ECHO. ECHO Or set MACHINE variable in AUTOEXEC.BAT: ECHO SET MACHINE=TS-4R ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :USE_PARAM @@ -74,7 +75,8 @@ ECHO. ECHO Or map manually: ECHO NET USE T: \\D2TESTNAS\test /YES ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== @@ -154,7 +156,8 @@ ECHO - T: drive is writable ECHO - Sufficient disk space on T: ECHO - Network connection is stable ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :DISK_ERROR @@ -166,7 +169,8 @@ ECHO - Target drive is full ECHO - Network connection lost ECHO - Permission denied ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :INIT_ERROR @@ -178,7 +182,8 @@ ECHO - Insufficient memory ECHO - Invalid path ECHO - Target drive not accessible ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :USER_ABORT @@ -187,7 +192,8 @@ ECHO [WARNING] Backup terminated by user (Ctrl+C) ECHO. ECHO Backup may be incomplete! ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END :NO_FILES @@ -198,7 +204,8 @@ ECHO This may indicate: ECHO - All files are already up to date (/D option) ECHO - Source drive is empty ECHO. -PAUSE Press any key to exit... +ECHO Press any key to exit... +PAUSE GOTO END REM ================================================================== diff --git a/check-dos-compatibility.ps1 b/check-dos-compatibility.ps1 index 9ff3eae..6459a52 100644 --- a/check-dos-compatibility.ps1 +++ b/check-dos-compatibility.ps1 @@ -29,6 +29,7 @@ $IncompatiblePatterns = @( @{Pattern='XCOPY.*\/Q'; Description='XCOPY /Q (quiet mode) - NOT in DOS 6.22'}, @{Pattern='IF.*\('; Description='IF ( ... ) multi-line blocks - NOT in DOS 6.22 (use GOTO labels)'}, @{Pattern='\)\s*ELSE\s*\('; Description=') ELSE ( clause - NOT in DOS 6.22 (use GOTO labels)'}, + @{Pattern='^PAUSE\s+'; Description='PAUSE message - NOT in DOS 6.22 (use ECHO then PAUSE)'}, @{Pattern='CHOICE\s+/[A-Z]'; Description='CHOICE with options - Check if CHOICE.COM available'}, @{Pattern='START\s+'; Description='START command - NOT in DOS 6.22'} ) diff --git a/fix-pause-syntax.ps1 b/fix-pause-syntax.ps1 new file mode 100644 index 0000000..357a1e4 --- /dev/null +++ b/fix-pause-syntax.ps1 @@ -0,0 +1,61 @@ +# Fix PAUSE command syntax - DOS 6.22 does not accept message parameters +# Convert "PAUSE message..." to "ECHO message..." followed by "PAUSE" + +$BATFiles = Get-ChildItem *.BAT | Where-Object { + $_.Name -notlike "*_FROM_*" -and + $_.Name -notlike "*_TEST*" -and + $_.Name -notlike "*_VERIFY*" -and + $_.Name -notlike "*_CHECK*" -and + $_.Name -notlike "*_MONITOR*" +} + +Write-Host "[INFO] Fixing PAUSE syntax (DOS 6.22 does not accept message)" -ForegroundColor Cyan +Write-Host "" + +$TotalFixed = 0 + +foreach ($File in $BATFiles) { + Write-Host "Processing: $($File.Name)" -ForegroundColor White + + $Lines = Get-Content $File.FullName + $Modified = $false + $NewLines = @() + + for ($i = 0; $i -lt $Lines.Count; $i++) { + $Line = $Lines[$i] + + # Check if line starts with PAUSE followed by text + if ($Line -match '^(\s*)PAUSE\s+(.+)$') { + $Indent = $Matches[1] + $Message = $Matches[2] + + # Replace with ECHO + PAUSE + $NewLines += "${Indent}ECHO $Message" + $NewLines += "${Indent}PAUSE" + + $Modified = $true + $TotalFixed++ + } else { + $NewLines += $Line + } + } + + if ($Modified) { + $NewLines | Set-Content $File.FullName + Write-Host " [OK] Fixed PAUSE syntax" -ForegroundColor Green + } else { + Write-Host " [OK] No PAUSE issues found" -ForegroundColor Green + } +} + +Write-Host "" +Write-Host "[SUCCESS] Fixed $TotalFixed PAUSE commands across all files" -ForegroundColor Green +Write-Host "" +Write-Host "DOS 6.22 PAUSE syntax:" -ForegroundColor Cyan +Write-Host " CORRECT:" -ForegroundColor Green +Write-Host " ECHO Press any key to continue..." -ForegroundColor White +Write-Host " PAUSE" -ForegroundColor White +Write-Host "" +Write-Host " INCORRECT (Windows NT/2000+):" -ForegroundColor Red +Write-Host " PAUSE Press any key to continue..." -ForegroundColor Red +Write-Host ""