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>
This commit is contained in:
2026-01-19 17:19:44 -07:00
parent e040cc99ff
commit 3b55cf1312
11 changed files with 154 additions and 46 deletions

View File

@@ -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 ==================================================================

View File

@@ -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 ==================================================================

View File

@@ -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 ==================================================================

View File

@@ -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 ==================================================================

View File

@@ -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

View File

@@ -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 ==================================================================

View File

@@ -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 ==================================================================

View File

@@ -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 ==================================================================

View File

@@ -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 ==================================================================

View File

@@ -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'}
)

61
fix-pause-syntax.ps1 Normal file
View File

@@ -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 ""