fix: DOS 6.22 batch file compatibility - XCOPY /Y and simplified scripts
Major DOS 6.22 compatibility fixes for the Dataforth update system: Changes Made: - Replace COPY /Y with XCOPY /Y (COPY doesn't support /Y in DOS 6.22) - Remove all trailing backslashes from XCOPY destinations (causes "Too many parameters") - Remove %%~dpnF and %~nx1 syntax (Windows NT only, not DOS 6.22) - Remove \NUL directory existence checks (unreliable in DOS 6.22) - Simplify all batch files to minimal, reliable DOS 6.22 patterns - Use MD >NUL 2>NUL for directory creation (ignore errors) Files Updated: - NWTOC.BAT v2.7: Simplified download with XCOPY /Y - CTONW.BAT v2.4: Simplified upload with XCOPY /Y - DEPLOY.BAT v2.2: Simplified deployment with XCOPY /Y - CHECKUPD.BAT v1.3: Removed %~nx1 syntax - UPDATE-ROOT.BAT: Root redirect script - UPDATE-PRODSW.BAT v2.3: Backup utility (new file, was UPDATE.BAT in ProdSW) Why: - Previous versions caused infinite loops due to COPY /Y not existing in DOS 6.22 - Trailing backslashes on XCOPY destinations caused "Too many parameters" errors - Complex variable syntax like %%~dpnF is NT-only and breaks on DOS 6.22 - Simplified scripts are more reliable and easier to debug Testing: - Deployed to AD2 (192.168.0.6) and D2TESTNAS (192.168.0.9) - Ready for testing on TS-4R and TS-3R DOS machines Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,189 +1,85 @@
|
||||
@ECHO OFF
|
||||
REM One-time deployment script for DOS Update System
|
||||
REM Installs automatic update system on DOS 6.22 machines
|
||||
REM Usage: T:\COMMON\ProdSW\DEPLOY.BAT machine-name
|
||||
REM Example: T:\COMMON\ProdSW\DEPLOY.BAT TS-4R
|
||||
REM Version: 2.0 - Simplified deployment
|
||||
REM Last modified: 2026-01-19
|
||||
|
||||
CLS
|
||||
|
||||
REM Check machine name parameter provided
|
||||
IF "%1"=="" GOTO NO_MACHINE_NAME
|
||||
|
||||
REM Save machine name to variable
|
||||
SET MACHINE=%1
|
||||
|
||||
ECHO ==============================================================
|
||||
ECHO DOS Update System - Deployment
|
||||
ECHO ==============================================================
|
||||
ECHO Machine: %MACHINE%
|
||||
ECHO ==============================================================
|
||||
ECHO.
|
||||
ECHO Installing automatic update system...
|
||||
ECHO.
|
||||
ECHO Files to install:
|
||||
ECHO - AUTOEXEC.BAT (startup configuration)
|
||||
ECHO - NWTOC.BAT (download updates)
|
||||
ECHO - CTONW.BAT (upload test data)
|
||||
ECHO - UPDATE.BAT (full backup)
|
||||
ECHO - CHECKUPD.BAT (check updates)
|
||||
ECHO - STAGE.BAT (system file updates)
|
||||
ECHO - REBOOT.BAT (apply staged updates)
|
||||
ECHO.
|
||||
PAUSE
|
||||
ECHO.
|
||||
|
||||
REM Create C:\BAT directory
|
||||
ECHO [1/3] Creating C:\BAT directory...
|
||||
IF NOT EXIST C:\BAT\*.* MD C:\BAT
|
||||
IF NOT EXIST C:\BAT\*.* GOTO BAT_DIR_ERROR
|
||||
ECHO [OK] C:\BAT directory ready
|
||||
ECHO.
|
||||
|
||||
REM Copy batch files from network to local machine
|
||||
ECHO [2/3] Copying batch files to C:\BAT...
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] NWTOC.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CTONW.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] UPDATE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CHECKUPD.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] STAGE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\REBOOT.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] REBOOT.BAT
|
||||
|
||||
ECHO [OK] All batch files installed
|
||||
ECHO.
|
||||
|
||||
REM Install AUTOEXEC.BAT with machine name
|
||||
ECHO [3/3] Installing AUTOEXEC.BAT...
|
||||
|
||||
REM Copy template and modify machine name
|
||||
COPY T:\COMMON\ProdSW\AUTOEXEC.BAT C:\AUTOEXEC.TMP /Y >NUL
|
||||
IF ERRORLEVEL 1 GOTO AUTOEXEC_ERROR
|
||||
|
||||
REM Create new AUTOEXEC with correct machine name
|
||||
REM Filter out existing SET MACHINE line and rebuild with new one
|
||||
ECHO @ECHO OFF > C:\AUTOEXEC.BAT
|
||||
TYPE C:\AUTOEXEC.TMP | FIND /V "@ECHO OFF" | FIND /V "SET MACHINE=" > C:\AUTOEXEC.TM1
|
||||
ECHO REM Dataforth Test Machine Startup - DOS 6.22 >> C:\AUTOEXEC.BAT
|
||||
ECHO REM Automatically runs after CONFIG.SYS during boot >> C:\AUTOEXEC.BAT
|
||||
ECHO REM Version: 3.0 - Auto-update system integrated >> C:\AUTOEXEC.BAT
|
||||
ECHO REM Last modified: 2026-01-19 >> C:\AUTOEXEC.BAT
|
||||
ECHO. >> C:\AUTOEXEC.BAT
|
||||
ECHO REM Set machine identity (configured by DEPLOY.BAT) >> C:\AUTOEXEC.BAT
|
||||
ECHO SET MACHINE=%MACHINE% >> C:\AUTOEXEC.BAT
|
||||
ECHO. >> C:\AUTOEXEC.BAT
|
||||
REM Filter out header comment lines using temp files (DOS 6.22 compatible)
|
||||
TYPE C:\AUTOEXEC.TM1 | FIND /V "REM Dataforth" > C:\AUTOEXEC.TM2
|
||||
TYPE C:\AUTOEXEC.TM2 | FIND /V "REM Automatically" > C:\AUTOEXEC.TM3
|
||||
TYPE C:\AUTOEXEC.TM3 | FIND /V "REM Version:" > C:\AUTOEXEC.TM4
|
||||
TYPE C:\AUTOEXEC.TM4 | FIND /V "REM Last modified" > C:\AUTOEXEC.TM5
|
||||
TYPE C:\AUTOEXEC.TM5 | FIND /V "REM Set machine identity" >> C:\AUTOEXEC.BAT
|
||||
|
||||
REM Clean up temp files
|
||||
DEL C:\AUTOEXEC.TMP
|
||||
DEL C:\AUTOEXEC.TM1
|
||||
DEL C:\AUTOEXEC.TM2
|
||||
DEL C:\AUTOEXEC.TM3
|
||||
DEL C:\AUTOEXEC.TM4
|
||||
DEL C:\AUTOEXEC.TM5
|
||||
|
||||
ECHO [OK] AUTOEXEC.BAT installed with MACHINE=%MACHINE%
|
||||
ECHO.
|
||||
|
||||
REM Create machine folder on network for backups
|
||||
IF NOT EXIST T:\%MACHINE%\*.* MD T:\%MACHINE%
|
||||
IF NOT EXIST T:\%MACHINE%\*.* GOTO MACHINE_FOLDER_WARNING
|
||||
ECHO [OK] Network backup folder created: T:\%MACHINE%
|
||||
ECHO.
|
||||
GOTO DEPLOYMENT_COMPLETE
|
||||
|
||||
:MACHINE_FOLDER_WARNING
|
||||
ECHO [WARNING] Could not create T:\%MACHINE% folder
|
||||
ECHO Backups will not work until this folder exists
|
||||
ECHO.
|
||||
|
||||
:DEPLOYMENT_COMPLETE
|
||||
CLS
|
||||
ECHO ==============================================================
|
||||
ECHO Deployment Complete!
|
||||
ECHO ==============================================================
|
||||
ECHO.
|
||||
ECHO Machine: %MACHINE%
|
||||
ECHO.
|
||||
ECHO The automatic update system is now installed.
|
||||
ECHO.
|
||||
ECHO What happens on next reboot:
|
||||
ECHO 1. Network client starts (C:\STARTNET.BAT)
|
||||
ECHO 2. Software updates download automatically (NWTOC)
|
||||
ECHO 3. Test data uploads automatically (CTONW)
|
||||
ECHO 4. System ready for testing
|
||||
ECHO.
|
||||
ECHO ==============================================================
|
||||
ECHO REBOOT NOW
|
||||
ECHO ==============================================================
|
||||
ECHO.
|
||||
ECHO Press Ctrl+Alt+Del to reboot
|
||||
ECHO.
|
||||
ECHO After reboot, the system will be fully operational.
|
||||
ECHO.
|
||||
PAUSE
|
||||
GOTO END
|
||||
|
||||
:NO_MACHINE_NAME
|
||||
ECHO.
|
||||
ECHO [ERROR] Machine name not provided
|
||||
ECHO.
|
||||
ECHO Usage: DEPLOY.BAT machine-name
|
||||
ECHO Example: DEPLOY.BAT TS-4R
|
||||
ECHO.
|
||||
ECHO Machine name must match network folder (T:\machine-name\)
|
||||
ECHO.
|
||||
PAUSE
|
||||
GOTO END
|
||||
|
||||
:BAT_DIR_ERROR
|
||||
ECHO.
|
||||
ECHO [ERROR] Could not create C:\BAT directory
|
||||
ECHO Insufficient permissions or disk full
|
||||
ECHO.
|
||||
PAUSE
|
||||
GOTO END
|
||||
|
||||
:COPY_ERROR
|
||||
ECHO.
|
||||
ECHO [ERROR] Failed to copy files from network
|
||||
ECHO.
|
||||
ECHO Check: T: drive accessible, C: drive has space
|
||||
ECHO.
|
||||
PAUSE
|
||||
GOTO END
|
||||
|
||||
:AUTOEXEC_ERROR
|
||||
ECHO.
|
||||
ECHO [ERROR] Could not copy AUTOEXEC.BAT template
|
||||
ECHO.
|
||||
ECHO Verify T:\COMMON\ProdSW\AUTOEXEC.BAT exists
|
||||
ECHO.
|
||||
PAUSE
|
||||
GOTO END
|
||||
|
||||
:END
|
||||
REM Clean up environment variable
|
||||
SET MACHINE=
|
||||
@ECHO OFF
|
||||
REM One-time deployment script for DOS Update System
|
||||
REM Usage: T:\COMMON\ProdSW\DEPLOY.BAT machine-name
|
||||
REM Version: 2.2 - XCOPY /Y for unattended operation (DOS 6.22)
|
||||
REM Last modified: 2026-01-20
|
||||
|
||||
CLS
|
||||
|
||||
REM Check machine name parameter
|
||||
IF "%1"=="" GOTO NO_MACHINE
|
||||
|
||||
REM Save machine name
|
||||
SET MACHINE=%1
|
||||
|
||||
ECHO ==============================================================
|
||||
ECHO DOS Update System - Deployment
|
||||
ECHO ==============================================================
|
||||
ECHO Machine: %MACHINE%
|
||||
ECHO ==============================================================
|
||||
ECHO.
|
||||
ECHO Press any key to install...
|
||||
PAUSE >NUL
|
||||
ECHO.
|
||||
|
||||
REM Create directories (ignore errors)
|
||||
MD C:\BAT >NUL 2>NUL
|
||||
MD T:\%MACHINE% >NUL 2>NUL
|
||||
|
||||
ECHO [1/2] Copying batch files to C:\BAT...
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT /Y >NUL
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT /Y >NUL
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT /Y >NUL
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT /Y >NUL
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT /Y >NUL
|
||||
XCOPY T:\COMMON\ProdSW\REBOOT.BAT C:\BAT /Y >NUL
|
||||
ECHO [OK] Batch files installed
|
||||
ECHO.
|
||||
|
||||
ECHO [2/2] Installing AUTOEXEC.BAT...
|
||||
REM Create AUTOEXEC.BAT with machine name
|
||||
ECHO @ECHO OFF > C:\AUTOEXEC.BAT
|
||||
ECHO REM Dataforth Test Machine - DOS 6.22 >> C:\AUTOEXEC.BAT
|
||||
ECHO SET MACHINE=%MACHINE% >> C:\AUTOEXEC.BAT
|
||||
ECHO SET PATH=C:\DOS;C:\NET;C:\BAT;C:\BATCH;C:\ >> C:\AUTOEXEC.BAT
|
||||
ECHO PROMPT $P$G >> C:\AUTOEXEC.BAT
|
||||
ECHO SET TEMP=C:\TEMP >> C:\AUTOEXEC.BAT
|
||||
ECHO SET TMP=C:\TEMP >> C:\AUTOEXEC.BAT
|
||||
ECHO MD C:\TEMP >NUL 2>NUL >> C:\AUTOEXEC.BAT
|
||||
ECHO CLS >> C:\AUTOEXEC.BAT
|
||||
ECHO ECHO. >> C:\AUTOEXEC.BAT
|
||||
ECHO ECHO Dataforth Test Machine: %MACHINE% >> C:\AUTOEXEC.BAT
|
||||
ECHO ECHO. >> C:\AUTOEXEC.BAT
|
||||
ECHO IF EXIST C:\STARTNET.BAT CALL C:\STARTNET.BAT >> C:\AUTOEXEC.BAT
|
||||
ECHO IF NOT EXIST T:\*.* GOTO NONET >> C:\AUTOEXEC.BAT
|
||||
ECHO IF EXIST C:\BAT\NWTOC.BAT CALL C:\BAT\NWTOC.BAT >> C:\AUTOEXEC.BAT
|
||||
ECHO IF EXIST C:\BAT\CTONW.BAT CALL C:\BAT\CTONW.BAT >> C:\AUTOEXEC.BAT
|
||||
ECHO GOTO READY >> C:\AUTOEXEC.BAT
|
||||
ECHO :NONET >> C:\AUTOEXEC.BAT
|
||||
ECHO ECHO [ERROR] Network not available >> C:\AUTOEXEC.BAT
|
||||
ECHO :READY >> C:\AUTOEXEC.BAT
|
||||
ECHO ECHO. >> C:\AUTOEXEC.BAT
|
||||
ECHO ECHO System Ready >> C:\AUTOEXEC.BAT
|
||||
ECHO ECHO. >> C:\AUTOEXEC.BAT
|
||||
ECHO [OK] AUTOEXEC.BAT installed with MACHINE=%MACHINE%
|
||||
ECHO.
|
||||
|
||||
ECHO ==============================================================
|
||||
ECHO Deployment Complete - REBOOT NOW
|
||||
ECHO ==============================================================
|
||||
ECHO.
|
||||
PAUSE
|
||||
GOTO END
|
||||
|
||||
:NO_MACHINE
|
||||
ECHO.
|
||||
ECHO [ERROR] Machine name not provided
|
||||
ECHO.
|
||||
ECHO Usage: DEPLOY.BAT machine-name
|
||||
ECHO Example: DEPLOY.BAT TS-4R
|
||||
ECHO.
|
||||
PAUSE
|
||||
GOTO END
|
||||
|
||||
:END
|
||||
SET MACHINE=
|
||||
|
||||
Reference in New Issue
Block a user