diff --git a/DEPLOY.BAT b/DEPLOY.BAT index aaaaba4..cf16109 100644 --- a/DEPLOY.BAT +++ b/DEPLOY.BAT @@ -268,9 +268,12 @@ REM This ensures it's set before any scripts or commands run IF NOT EXIST C:\AUTOEXEC.BAT GOTO CREATE_NEW_AUTOEXEC REM AUTOEXEC.BAT exists - insert SET MACHINE at line 2 (after @ECHO OFF) +REM Use intermediate files - DOS 6.22 cannot handle double pipes with redirection ECHO @ECHO OFF > C:\AUTOEXEC.TMP ECHO SET MACHINE=%MACHINE% >> C:\AUTOEXEC.TMP -TYPE C:\AUTOEXEC.BAT | FIND /V "@ECHO OFF" >> C:\AUTOEXEC.TMP +TYPE C:\AUTOEXEC.BAT | FIND /V "@ECHO OFF" > C:\AUTOEXEC.TM1 +TYPE C:\AUTOEXEC.TM1 >> C:\AUTOEXEC.TMP +DEL C:\AUTOEXEC.TM1 COPY C:\AUTOEXEC.TMP C:\AUTOEXEC.BAT >NUL DEL C:\AUTOEXEC.TMP GOTO MACHINE_ADD_DONE @@ -296,11 +299,16 @@ ECHO Updating to: SET MACHINE=%MACHINE% ECHO. REM Remove old SET MACHINE= line and insert new one at beginning +REM Use intermediate files - DOS 6.22 cannot handle double pipes with redirection ECHO @ECHO OFF > C:\AUTOEXEC.TMP ECHO SET MACHINE=%MACHINE% >> C:\AUTOEXEC.TMP -REM Append rest of AUTOEXEC.BAT, excluding @ECHO OFF and old SET MACHINE= lines -TYPE C:\AUTOEXEC.BAT | FIND /V "@ECHO OFF" | FIND /V "SET MACHINE=" >> C:\AUTOEXEC.TMP +REM Filter out @ECHO OFF and SET MACHINE= lines in separate steps +TYPE C:\AUTOEXEC.BAT | FIND /V "@ECHO OFF" > C:\AUTOEXEC.TM1 +TYPE C:\AUTOEXEC.TM1 | FIND /V "SET MACHINE=" > C:\AUTOEXEC.TM2 +TYPE C:\AUTOEXEC.TM2 >> C:\AUTOEXEC.TMP +DEL C:\AUTOEXEC.TM1 +DEL C:\AUTOEXEC.TM2 REM Replace original with updated version COPY C:\AUTOEXEC.TMP C:\AUTOEXEC.BAT >NUL diff --git a/check-dos-compatibility.ps1 b/check-dos-compatibility.ps1 index 6459a52..2856bc2 100644 --- a/check-dos-compatibility.ps1 +++ b/check-dos-compatibility.ps1 @@ -30,6 +30,7 @@ $IncompatiblePatterns = @( @{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='\|.*\|.*>>'; Description='Double pipe with redirect (|..|..>>) - NOT reliable in DOS 6.22 (use temp files)'}, @{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'} )