fix: Preserve CRLF line endings in DOS BAT files during sync
Critical fix for DOS 6.22 compatibility - CRLF line endings were being converted to LF during AD2-to-NAS sync, causing BAT files to fail on DOS. Root Cause: - OpenSSH scp uses SFTP protocol by default (text mode) - SFTP converts line endings (CRLF → LF) - DOS 6.22 requires CRLF for batch file execution Solution - Fixed AD2 Sync Script: - Added -O flag to scp commands in Sync-FromNAS.ps1 - Forces legacy SCP protocol (binary mode) - Preserves CRLF line endings during transfer Created deployment scripts: - fix-ad2-scp-line-endings.ps1: Updates Sync-FromNAS.ps1 with -O flag - deploy-all-bat-files.ps1: Deploy 6 BAT files to AD2 (UPDATE, NWTOC, CTONW, CHECKUPD, REBOOT, DEPLOY) - deploy-bat-to-nas-direct.ps1: Direct SCP to NAS with -O flag for immediate testing - verify-nas-crlf.ps1: Validates CRLF preservation on NAS Created diagnostic scripts: - check-line-endings.ps1: Compare original vs NAS file line endings - check-ad2-sync-log.ps1: Monitor sync log on AD2 - check-ad2-bat-files.ps1: Verify files on AD2 - check-scp-commands.ps1: Analyze SCP command usage - trigger-ad2-sync-now.ps1: Manual sync trigger for testing Verification: - DEPLOY.BAT: 9,753 bytes with CRLF (was 9,408 bytes with LF) - All 6 BAT files deployed to NAS with CRLF preserved - DOS machines can now execute batch files from T:\ Files deployed: - DEPLOY.BAT (one-time installer) - UPDATE.BAT (backup utility) - NWTOC.BAT (network to computer updates) - CTONW.BAT (computer to network uploads) - CHECKUPD.BAT (check for updates) - REBOOT.BAT (reboot utility) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
345
DEPLOY_FROM_AD2.BAT
Normal file
345
DEPLOY_FROM_AD2.BAT
Normal file
@@ -0,0 +1,345 @@
|
|||||||
|
@ECHO OFF
|
||||||
|
REM DEPLOY.BAT - One-time deployment script for DOS Update System
|
||||||
|
REM
|
||||||
|
REM Purpose: Installs the new NWTOC update system on DOS 6.22 machines
|
||||||
|
REM Location: Run from T:\COMMON\ProdSW\DEPLOY.BAT
|
||||||
|
REM
|
||||||
|
REM What this does:
|
||||||
|
REM 1. Backs up current AUTOEXEC.BAT
|
||||||
|
REM 2. Prompts for machine name (TS-4R, TS-7A, etc.)
|
||||||
|
REM 3. Updates AUTOEXEC.BAT with MACHINE variable
|
||||||
|
REM 4. Copies update batch files to C:\BAT\
|
||||||
|
REM 5. Runs initial NWTOC to download all updates
|
||||||
|
REM
|
||||||
|
REM Version: 1.0 - DOS 6.22 compatible
|
||||||
|
REM Last modified: 2026-01-19
|
||||||
|
|
||||||
|
CLS
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO DOS Update System - One-Time Deployment
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO This script will install the new update system on this machine.
|
||||||
|
ECHO.
|
||||||
|
ECHO What will be installed:
|
||||||
|
ECHO - NWTOC.BAT (Download updates from network)
|
||||||
|
ECHO - CTONW.BAT (Upload changes to network)
|
||||||
|
ECHO - UPDATE.BAT (Full system backup)
|
||||||
|
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.
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 1: Verify T: drive is accessible
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
ECHO [STEP 1/5] Checking network drive...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
T: 2>NUL
|
||||||
|
IF ERRORLEVEL 1 GOTO NO_T_DRIVE
|
||||||
|
|
||||||
|
C:
|
||||||
|
IF NOT EXIST T:\NUL GOTO NO_T_DRIVE
|
||||||
|
|
||||||
|
ECHO [OK] T: drive is accessible
|
||||||
|
ECHO T: = \\D2TESTNAS\test
|
||||||
|
ECHO.
|
||||||
|
GOTO CHECK_DEPLOY_FILES
|
||||||
|
|
||||||
|
:NO_T_DRIVE
|
||||||
|
C:
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] T: drive not available
|
||||||
|
ECHO.
|
||||||
|
ECHO The network drive T: must be mapped to \\D2TESTNAS\test
|
||||||
|
ECHO.
|
||||||
|
ECHO Run network startup first:
|
||||||
|
ECHO C:\NET\STARTNET.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Or map manually:
|
||||||
|
ECHO NET USE T: \\D2TESTNAS\test /YES
|
||||||
|
ECHO.
|
||||||
|
ECHO Then run DEPLOY.BAT again.
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 2: Verify deployment files exist on network
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:CHECK_DEPLOY_FILES
|
||||||
|
ECHO [STEP 2/5] Verifying deployment files...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\NWTOC.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\CTONW.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\UPDATE.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\STAGE.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\CHECKUPD.BAT GOTO MISSING_FILES
|
||||||
|
|
||||||
|
ECHO [OK] All deployment files found on network
|
||||||
|
ECHO Location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
GOTO GET_MACHINE_NAME
|
||||||
|
|
||||||
|
:MISSING_FILES
|
||||||
|
ECHO [ERROR] Deployment files not found on network
|
||||||
|
ECHO.
|
||||||
|
ECHO Expected location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
ECHO Files needed:
|
||||||
|
ECHO - NWTOC.BAT
|
||||||
|
ECHO - CTONW.BAT
|
||||||
|
ECHO - UPDATE.BAT
|
||||||
|
ECHO - STAGE.BAT
|
||||||
|
ECHO - CHECKUPD.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Contact system administrator.
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 3: Get machine name from user
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:GET_MACHINE_NAME
|
||||||
|
ECHO [STEP 3/5] Configure machine name...
|
||||||
|
ECHO.
|
||||||
|
ECHO Enter this machine's name (e.g., TS-4R, TS-7A, TS-12B):
|
||||||
|
ECHO.
|
||||||
|
ECHO Machine name must match the folder on T: drive.
|
||||||
|
ECHO Example: If this is TS-4R, there should be T:\TS-4R\
|
||||||
|
ECHO.
|
||||||
|
SET /P MACHINE=Machine name:
|
||||||
|
|
||||||
|
REM Validate machine name was entered
|
||||||
|
IF "%MACHINE%"=="" GOTO MACHINE_NAME_EMPTY
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO [OK] Machine name: %MACHINE%
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Verify machine folder exists on network
|
||||||
|
ECHO Checking for T:\%MACHINE%\ folder...
|
||||||
|
IF NOT EXIST T:\%MACHINE%\NUL MD T:\%MACHINE%
|
||||||
|
IF NOT EXIST T:\%MACHINE%\NUL GOTO MACHINE_FOLDER_ERROR
|
||||||
|
|
||||||
|
ECHO [OK] Machine folder ready: T:\%MACHINE%\
|
||||||
|
ECHO.
|
||||||
|
GOTO BACKUP_AUTOEXEC
|
||||||
|
|
||||||
|
:MACHINE_NAME_EMPTY
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Machine name cannot be empty
|
||||||
|
ECHO.
|
||||||
|
GOTO GET_MACHINE_NAME
|
||||||
|
|
||||||
|
:MACHINE_FOLDER_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not create machine folder on network
|
||||||
|
ECHO.
|
||||||
|
ECHO Check:
|
||||||
|
ECHO - T: drive is writable
|
||||||
|
ECHO - Network connection is stable
|
||||||
|
ECHO - Permissions to create directories
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 4: Backup current AUTOEXEC.BAT and install batch files
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:BACKUP_AUTOEXEC
|
||||||
|
ECHO [STEP 4/5] Installing update system files...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Backup current AUTOEXEC.BAT
|
||||||
|
IF EXIST C:\AUTOEXEC.BAT (
|
||||||
|
ECHO Backing up AUTOEXEC.BAT...
|
||||||
|
COPY C:\AUTOEXEC.BAT C:\AUTOEXEC.SAV >NUL
|
||||||
|
IF ERRORLEVEL 1 GOTO BACKUP_ERROR
|
||||||
|
ECHO [OK] Backup created: C:\AUTOEXEC.SAV
|
||||||
|
) ELSE (
|
||||||
|
ECHO [WARNING] No existing AUTOEXEC.BAT found
|
||||||
|
)
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Create C:\BAT directory if it doesn't exist
|
||||||
|
IF NOT EXIST C:\BAT\NUL MD C:\BAT
|
||||||
|
IF NOT EXIST C:\BAT\NUL GOTO BAT_DIR_ERROR
|
||||||
|
|
||||||
|
ECHO Copying update system files to C:\BAT\...
|
||||||
|
|
||||||
|
REM Copy batch files from network to local machine
|
||||||
|
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] NWTOC.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] CTONW.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] UPDATE.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] STAGE.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] CHECKUPD.BAT
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO [OK] All update system files installed
|
||||||
|
ECHO.
|
||||||
|
GOTO UPDATE_AUTOEXEC
|
||||||
|
|
||||||
|
:BACKUP_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not backup AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Continue anyway? (Y/N)
|
||||||
|
CHOICE /C:YN /N
|
||||||
|
IF ERRORLEVEL 2 GOTO END
|
||||||
|
ECHO.
|
||||||
|
GOTO UPDATE_AUTOEXEC
|
||||||
|
|
||||||
|
:BAT_DIR_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not create C:\BAT directory
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
:COPY_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Failed to copy files from network
|
||||||
|
ECHO.
|
||||||
|
ECHO Check:
|
||||||
|
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...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 5: Update AUTOEXEC.BAT with MACHINE variable
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:UPDATE_AUTOEXEC
|
||||||
|
ECHO [STEP 5/5] Updating AUTOEXEC.BAT...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Check if MACHINE variable already exists in AUTOEXEC.BAT
|
||||||
|
IF EXIST C:\AUTOEXEC.BAT (
|
||||||
|
FIND "SET MACHINE=" C:\AUTOEXEC.BAT >NUL
|
||||||
|
IF NOT ERRORLEVEL 1 GOTO MACHINE_EXISTS
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Append MACHINE variable to AUTOEXEC.BAT
|
||||||
|
ECHO SET MACHINE=%MACHINE% >> C:\AUTOEXEC.BAT
|
||||||
|
IF ERRORLEVEL 1 GOTO AUTOEXEC_ERROR
|
||||||
|
|
||||||
|
ECHO [OK] Added to AUTOEXEC.BAT: SET MACHINE=%MACHINE%
|
||||||
|
ECHO.
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
:MACHINE_EXISTS
|
||||||
|
ECHO [WARNING] MACHINE variable already exists in AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Current AUTOEXEC.BAT contains:
|
||||||
|
TYPE C:\AUTOEXEC.BAT | FIND "SET MACHINE="
|
||||||
|
ECHO.
|
||||||
|
ECHO Update MACHINE variable to %MACHINE%? (Y/N)
|
||||||
|
CHOICE /C:YN /N
|
||||||
|
IF ERRORLEVEL 2 GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO Manual edit required:
|
||||||
|
ECHO 1. Edit C:\AUTOEXEC.BAT
|
||||||
|
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...
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
:AUTOEXEC_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not update AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO You must manually add this line to C:\AUTOEXEC.BAT:
|
||||||
|
ECHO SET MACHINE=%MACHINE%
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to continue...
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM DEPLOYMENT COMPLETE
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:DEPLOYMENT_COMPLETE
|
||||||
|
CLS
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Deployment Complete!
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO The DOS Update System has been installed on this machine.
|
||||||
|
ECHO.
|
||||||
|
ECHO Machine name: %MACHINE%
|
||||||
|
ECHO Backup location: T:\%MACHINE%\BACKUP\
|
||||||
|
ECHO Update location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Available Commands:
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO NWTOC - Download updates from network
|
||||||
|
ECHO CTONW - Upload local changes to network
|
||||||
|
ECHO UPDATE - Backup entire C: drive to network
|
||||||
|
ECHO CHECKUPD - Check for available updates
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Next Steps:
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO 1. REBOOT this machine to activate MACHINE variable
|
||||||
|
ECHO Press Ctrl+Alt+Del to reboot
|
||||||
|
ECHO.
|
||||||
|
ECHO 2. After reboot, run NWTOC to download all updates:
|
||||||
|
ECHO C:\BAT\NWTOC
|
||||||
|
ECHO.
|
||||||
|
ECHO 3. Create initial backup:
|
||||||
|
ECHO C:\BAT\UPDATE
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO Deployment log saved to: T:\%MACHINE%\DEPLOY.LOG
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Create deployment log
|
||||||
|
ECHO Deployment completed: %DATE% %TIME% > T:\%MACHINE%\DEPLOY.LOG
|
||||||
|
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...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM CLEANUP AND EXIT
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:END
|
||||||
|
REM Clean up environment variables
|
||||||
|
SET MACHINE=
|
||||||
345
DEPLOY_FROM_NAS.BAT
Normal file
345
DEPLOY_FROM_NAS.BAT
Normal file
@@ -0,0 +1,345 @@
|
|||||||
|
@ECHO OFF
|
||||||
|
REM DEPLOY.BAT - One-time deployment script for DOS Update System
|
||||||
|
REM
|
||||||
|
REM Purpose: Installs the new NWTOC update system on DOS 6.22 machines
|
||||||
|
REM Location: Run from T:\COMMON\ProdSW\DEPLOY.BAT
|
||||||
|
REM
|
||||||
|
REM What this does:
|
||||||
|
REM 1. Backs up current AUTOEXEC.BAT
|
||||||
|
REM 2. Prompts for machine name (TS-4R, TS-7A, etc.)
|
||||||
|
REM 3. Updates AUTOEXEC.BAT with MACHINE variable
|
||||||
|
REM 4. Copies update batch files to C:\BAT\
|
||||||
|
REM 5. Runs initial NWTOC to download all updates
|
||||||
|
REM
|
||||||
|
REM Version: 1.0 - DOS 6.22 compatible
|
||||||
|
REM Last modified: 2026-01-19
|
||||||
|
|
||||||
|
CLS
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO DOS Update System - One-Time Deployment
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO This script will install the new update system on this machine.
|
||||||
|
ECHO.
|
||||||
|
ECHO What will be installed:
|
||||||
|
ECHO - NWTOC.BAT (Download updates from network)
|
||||||
|
ECHO - CTONW.BAT (Upload changes to network)
|
||||||
|
ECHO - UPDATE.BAT (Full system backup)
|
||||||
|
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.
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 1: Verify T: drive is accessible
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
ECHO [STEP 1/5] Checking network drive...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
T: 2>NUL
|
||||||
|
IF ERRORLEVEL 1 GOTO NO_T_DRIVE
|
||||||
|
|
||||||
|
C:
|
||||||
|
IF NOT EXIST T:\NUL GOTO NO_T_DRIVE
|
||||||
|
|
||||||
|
ECHO [OK] T: drive is accessible
|
||||||
|
ECHO T: = \\D2TESTNAS\test
|
||||||
|
ECHO.
|
||||||
|
GOTO CHECK_DEPLOY_FILES
|
||||||
|
|
||||||
|
:NO_T_DRIVE
|
||||||
|
C:
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] T: drive not available
|
||||||
|
ECHO.
|
||||||
|
ECHO The network drive T: must be mapped to \\D2TESTNAS\test
|
||||||
|
ECHO.
|
||||||
|
ECHO Run network startup first:
|
||||||
|
ECHO C:\NET\STARTNET.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Or map manually:
|
||||||
|
ECHO NET USE T: \\D2TESTNAS\test /YES
|
||||||
|
ECHO.
|
||||||
|
ECHO Then run DEPLOY.BAT again.
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 2: Verify deployment files exist on network
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:CHECK_DEPLOY_FILES
|
||||||
|
ECHO [STEP 2/5] Verifying deployment files...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\NWTOC.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\CTONW.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\UPDATE.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\STAGE.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\CHECKUPD.BAT GOTO MISSING_FILES
|
||||||
|
|
||||||
|
ECHO [OK] All deployment files found on network
|
||||||
|
ECHO Location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
GOTO GET_MACHINE_NAME
|
||||||
|
|
||||||
|
:MISSING_FILES
|
||||||
|
ECHO [ERROR] Deployment files not found on network
|
||||||
|
ECHO.
|
||||||
|
ECHO Expected location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
ECHO Files needed:
|
||||||
|
ECHO - NWTOC.BAT
|
||||||
|
ECHO - CTONW.BAT
|
||||||
|
ECHO - UPDATE.BAT
|
||||||
|
ECHO - STAGE.BAT
|
||||||
|
ECHO - CHECKUPD.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Contact system administrator.
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 3: Get machine name from user
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:GET_MACHINE_NAME
|
||||||
|
ECHO [STEP 3/5] Configure machine name...
|
||||||
|
ECHO.
|
||||||
|
ECHO Enter this machine's name (e.g., TS-4R, TS-7A, TS-12B):
|
||||||
|
ECHO.
|
||||||
|
ECHO Machine name must match the folder on T: drive.
|
||||||
|
ECHO Example: If this is TS-4R, there should be T:\TS-4R\
|
||||||
|
ECHO.
|
||||||
|
SET /P MACHINE=Machine name:
|
||||||
|
|
||||||
|
REM Validate machine name was entered
|
||||||
|
IF "%MACHINE%"=="" GOTO MACHINE_NAME_EMPTY
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO [OK] Machine name: %MACHINE%
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Verify machine folder exists on network
|
||||||
|
ECHO Checking for T:\%MACHINE%\ folder...
|
||||||
|
IF NOT EXIST T:\%MACHINE%\NUL MD T:\%MACHINE%
|
||||||
|
IF NOT EXIST T:\%MACHINE%\NUL GOTO MACHINE_FOLDER_ERROR
|
||||||
|
|
||||||
|
ECHO [OK] Machine folder ready: T:\%MACHINE%\
|
||||||
|
ECHO.
|
||||||
|
GOTO BACKUP_AUTOEXEC
|
||||||
|
|
||||||
|
:MACHINE_NAME_EMPTY
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Machine name cannot be empty
|
||||||
|
ECHO.
|
||||||
|
GOTO GET_MACHINE_NAME
|
||||||
|
|
||||||
|
:MACHINE_FOLDER_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not create machine folder on network
|
||||||
|
ECHO.
|
||||||
|
ECHO Check:
|
||||||
|
ECHO - T: drive is writable
|
||||||
|
ECHO - Network connection is stable
|
||||||
|
ECHO - Permissions to create directories
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 4: Backup current AUTOEXEC.BAT and install batch files
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:BACKUP_AUTOEXEC
|
||||||
|
ECHO [STEP 4/5] Installing update system files...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Backup current AUTOEXEC.BAT
|
||||||
|
IF EXIST C:\AUTOEXEC.BAT (
|
||||||
|
ECHO Backing up AUTOEXEC.BAT...
|
||||||
|
COPY C:\AUTOEXEC.BAT C:\AUTOEXEC.SAV >NUL
|
||||||
|
IF ERRORLEVEL 1 GOTO BACKUP_ERROR
|
||||||
|
ECHO [OK] Backup created: C:\AUTOEXEC.SAV
|
||||||
|
) ELSE (
|
||||||
|
ECHO [WARNING] No existing AUTOEXEC.BAT found
|
||||||
|
)
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Create C:\BAT directory if it doesn't exist
|
||||||
|
IF NOT EXIST C:\BAT\NUL MD C:\BAT
|
||||||
|
IF NOT EXIST C:\BAT\NUL GOTO BAT_DIR_ERROR
|
||||||
|
|
||||||
|
ECHO Copying update system files to C:\BAT\...
|
||||||
|
|
||||||
|
REM Copy batch files from network to local machine
|
||||||
|
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] NWTOC.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] CTONW.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] UPDATE.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] STAGE.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] CHECKUPD.BAT
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO [OK] All update system files installed
|
||||||
|
ECHO.
|
||||||
|
GOTO UPDATE_AUTOEXEC
|
||||||
|
|
||||||
|
:BACKUP_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not backup AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Continue anyway? (Y/N)
|
||||||
|
CHOICE /C:YN /N
|
||||||
|
IF ERRORLEVEL 2 GOTO END
|
||||||
|
ECHO.
|
||||||
|
GOTO UPDATE_AUTOEXEC
|
||||||
|
|
||||||
|
:BAT_DIR_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not create C:\BAT directory
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
:COPY_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Failed to copy files from network
|
||||||
|
ECHO.
|
||||||
|
ECHO Check:
|
||||||
|
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...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 5: Update AUTOEXEC.BAT with MACHINE variable
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:UPDATE_AUTOEXEC
|
||||||
|
ECHO [STEP 5/5] Updating AUTOEXEC.BAT...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Check if MACHINE variable already exists in AUTOEXEC.BAT
|
||||||
|
IF EXIST C:\AUTOEXEC.BAT (
|
||||||
|
FIND "SET MACHINE=" C:\AUTOEXEC.BAT >NUL
|
||||||
|
IF NOT ERRORLEVEL 1 GOTO MACHINE_EXISTS
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Append MACHINE variable to AUTOEXEC.BAT
|
||||||
|
ECHO SET MACHINE=%MACHINE% >> C:\AUTOEXEC.BAT
|
||||||
|
IF ERRORLEVEL 1 GOTO AUTOEXEC_ERROR
|
||||||
|
|
||||||
|
ECHO [OK] Added to AUTOEXEC.BAT: SET MACHINE=%MACHINE%
|
||||||
|
ECHO.
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
:MACHINE_EXISTS
|
||||||
|
ECHO [WARNING] MACHINE variable already exists in AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Current AUTOEXEC.BAT contains:
|
||||||
|
TYPE C:\AUTOEXEC.BAT | FIND "SET MACHINE="
|
||||||
|
ECHO.
|
||||||
|
ECHO Update MACHINE variable to %MACHINE%? (Y/N)
|
||||||
|
CHOICE /C:YN /N
|
||||||
|
IF ERRORLEVEL 2 GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO Manual edit required:
|
||||||
|
ECHO 1. Edit C:\AUTOEXEC.BAT
|
||||||
|
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...
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
:AUTOEXEC_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not update AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO You must manually add this line to C:\AUTOEXEC.BAT:
|
||||||
|
ECHO SET MACHINE=%MACHINE%
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to continue...
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM DEPLOYMENT COMPLETE
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:DEPLOYMENT_COMPLETE
|
||||||
|
CLS
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Deployment Complete!
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO The DOS Update System has been installed on this machine.
|
||||||
|
ECHO.
|
||||||
|
ECHO Machine name: %MACHINE%
|
||||||
|
ECHO Backup location: T:\%MACHINE%\BACKUP\
|
||||||
|
ECHO Update location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Available Commands:
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO NWTOC - Download updates from network
|
||||||
|
ECHO CTONW - Upload local changes to network
|
||||||
|
ECHO UPDATE - Backup entire C: drive to network
|
||||||
|
ECHO CHECKUPD - Check for available updates
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Next Steps:
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO 1. REBOOT this machine to activate MACHINE variable
|
||||||
|
ECHO Press Ctrl+Alt+Del to reboot
|
||||||
|
ECHO.
|
||||||
|
ECHO 2. After reboot, run NWTOC to download all updates:
|
||||||
|
ECHO C:\BAT\NWTOC
|
||||||
|
ECHO.
|
||||||
|
ECHO 3. Create initial backup:
|
||||||
|
ECHO C:\BAT\UPDATE
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO Deployment log saved to: T:\%MACHINE%\DEPLOY.LOG
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Create deployment log
|
||||||
|
ECHO Deployment completed: %DATE% %TIME% > T:\%MACHINE%\DEPLOY.LOG
|
||||||
|
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...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM CLEANUP AND EXIT
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:END
|
||||||
|
REM Clean up environment variables
|
||||||
|
SET MACHINE=
|
||||||
345
DEPLOY_TEST.BAT
Normal file
345
DEPLOY_TEST.BAT
Normal file
@@ -0,0 +1,345 @@
|
|||||||
|
@ECHO OFF
|
||||||
|
REM DEPLOY.BAT - One-time deployment script for DOS Update System
|
||||||
|
REM
|
||||||
|
REM Purpose: Installs the new NWTOC update system on DOS 6.22 machines
|
||||||
|
REM Location: Run from T:\COMMON\ProdSW\DEPLOY.BAT
|
||||||
|
REM
|
||||||
|
REM What this does:
|
||||||
|
REM 1. Backs up current AUTOEXEC.BAT
|
||||||
|
REM 2. Prompts for machine name (TS-4R, TS-7A, etc.)
|
||||||
|
REM 3. Updates AUTOEXEC.BAT with MACHINE variable
|
||||||
|
REM 4. Copies update batch files to C:\BAT\
|
||||||
|
REM 5. Runs initial NWTOC to download all updates
|
||||||
|
REM
|
||||||
|
REM Version: 1.0 - DOS 6.22 compatible
|
||||||
|
REM Last modified: 2026-01-19
|
||||||
|
|
||||||
|
CLS
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO DOS Update System - One-Time Deployment
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO This script will install the new update system on this machine.
|
||||||
|
ECHO.
|
||||||
|
ECHO What will be installed:
|
||||||
|
ECHO - NWTOC.BAT (Download updates from network)
|
||||||
|
ECHO - CTONW.BAT (Upload changes to network)
|
||||||
|
ECHO - UPDATE.BAT (Full system backup)
|
||||||
|
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.
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 1: Verify T: drive is accessible
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
ECHO [STEP 1/5] Checking network drive...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
T: 2>NUL
|
||||||
|
IF ERRORLEVEL 1 GOTO NO_T_DRIVE
|
||||||
|
|
||||||
|
C:
|
||||||
|
IF NOT EXIST T:\NUL GOTO NO_T_DRIVE
|
||||||
|
|
||||||
|
ECHO [OK] T: drive is accessible
|
||||||
|
ECHO T: = \\D2TESTNAS\test
|
||||||
|
ECHO.
|
||||||
|
GOTO CHECK_DEPLOY_FILES
|
||||||
|
|
||||||
|
:NO_T_DRIVE
|
||||||
|
C:
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] T: drive not available
|
||||||
|
ECHO.
|
||||||
|
ECHO The network drive T: must be mapped to \\D2TESTNAS\test
|
||||||
|
ECHO.
|
||||||
|
ECHO Run network startup first:
|
||||||
|
ECHO C:\NET\STARTNET.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Or map manually:
|
||||||
|
ECHO NET USE T: \\D2TESTNAS\test /YES
|
||||||
|
ECHO.
|
||||||
|
ECHO Then run DEPLOY.BAT again.
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 2: Verify deployment files exist on network
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:CHECK_DEPLOY_FILES
|
||||||
|
ECHO [STEP 2/5] Verifying deployment files...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\NWTOC.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\CTONW.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\UPDATE.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\STAGE.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\CHECKUPD.BAT GOTO MISSING_FILES
|
||||||
|
|
||||||
|
ECHO [OK] All deployment files found on network
|
||||||
|
ECHO Location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
GOTO GET_MACHINE_NAME
|
||||||
|
|
||||||
|
:MISSING_FILES
|
||||||
|
ECHO [ERROR] Deployment files not found on network
|
||||||
|
ECHO.
|
||||||
|
ECHO Expected location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
ECHO Files needed:
|
||||||
|
ECHO - NWTOC.BAT
|
||||||
|
ECHO - CTONW.BAT
|
||||||
|
ECHO - UPDATE.BAT
|
||||||
|
ECHO - STAGE.BAT
|
||||||
|
ECHO - CHECKUPD.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Contact system administrator.
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 3: Get machine name from user
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:GET_MACHINE_NAME
|
||||||
|
ECHO [STEP 3/5] Configure machine name...
|
||||||
|
ECHO.
|
||||||
|
ECHO Enter this machine's name (e.g., TS-4R, TS-7A, TS-12B):
|
||||||
|
ECHO.
|
||||||
|
ECHO Machine name must match the folder on T: drive.
|
||||||
|
ECHO Example: If this is TS-4R, there should be T:\TS-4R\
|
||||||
|
ECHO.
|
||||||
|
SET /P MACHINE=Machine name:
|
||||||
|
|
||||||
|
REM Validate machine name was entered
|
||||||
|
IF "%MACHINE%"=="" GOTO MACHINE_NAME_EMPTY
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO [OK] Machine name: %MACHINE%
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Verify machine folder exists on network
|
||||||
|
ECHO Checking for T:\%MACHINE%\ folder...
|
||||||
|
IF NOT EXIST T:\%MACHINE%\NUL MD T:\%MACHINE%
|
||||||
|
IF NOT EXIST T:\%MACHINE%\NUL GOTO MACHINE_FOLDER_ERROR
|
||||||
|
|
||||||
|
ECHO [OK] Machine folder ready: T:\%MACHINE%\
|
||||||
|
ECHO.
|
||||||
|
GOTO BACKUP_AUTOEXEC
|
||||||
|
|
||||||
|
:MACHINE_NAME_EMPTY
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Machine name cannot be empty
|
||||||
|
ECHO.
|
||||||
|
GOTO GET_MACHINE_NAME
|
||||||
|
|
||||||
|
:MACHINE_FOLDER_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not create machine folder on network
|
||||||
|
ECHO.
|
||||||
|
ECHO Check:
|
||||||
|
ECHO - T: drive is writable
|
||||||
|
ECHO - Network connection is stable
|
||||||
|
ECHO - Permissions to create directories
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 4: Backup current AUTOEXEC.BAT and install batch files
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:BACKUP_AUTOEXEC
|
||||||
|
ECHO [STEP 4/5] Installing update system files...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Backup current AUTOEXEC.BAT
|
||||||
|
IF EXIST C:\AUTOEXEC.BAT (
|
||||||
|
ECHO Backing up AUTOEXEC.BAT...
|
||||||
|
COPY C:\AUTOEXEC.BAT C:\AUTOEXEC.SAV >NUL
|
||||||
|
IF ERRORLEVEL 1 GOTO BACKUP_ERROR
|
||||||
|
ECHO [OK] Backup created: C:\AUTOEXEC.SAV
|
||||||
|
) ELSE (
|
||||||
|
ECHO [WARNING] No existing AUTOEXEC.BAT found
|
||||||
|
)
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Create C:\BAT directory if it doesn't exist
|
||||||
|
IF NOT EXIST C:\BAT\NUL MD C:\BAT
|
||||||
|
IF NOT EXIST C:\BAT\NUL GOTO BAT_DIR_ERROR
|
||||||
|
|
||||||
|
ECHO Copying update system files to C:\BAT\...
|
||||||
|
|
||||||
|
REM Copy batch files from network to local machine
|
||||||
|
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] NWTOC.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] CTONW.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] UPDATE.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] STAGE.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] CHECKUPD.BAT
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO [OK] All update system files installed
|
||||||
|
ECHO.
|
||||||
|
GOTO UPDATE_AUTOEXEC
|
||||||
|
|
||||||
|
:BACKUP_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not backup AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Continue anyway? (Y/N)
|
||||||
|
CHOICE /C:YN /N
|
||||||
|
IF ERRORLEVEL 2 GOTO END
|
||||||
|
ECHO.
|
||||||
|
GOTO UPDATE_AUTOEXEC
|
||||||
|
|
||||||
|
:BAT_DIR_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not create C:\BAT directory
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
:COPY_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Failed to copy files from network
|
||||||
|
ECHO.
|
||||||
|
ECHO Check:
|
||||||
|
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...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 5: Update AUTOEXEC.BAT with MACHINE variable
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:UPDATE_AUTOEXEC
|
||||||
|
ECHO [STEP 5/5] Updating AUTOEXEC.BAT...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Check if MACHINE variable already exists in AUTOEXEC.BAT
|
||||||
|
IF EXIST C:\AUTOEXEC.BAT (
|
||||||
|
FIND "SET MACHINE=" C:\AUTOEXEC.BAT >NUL
|
||||||
|
IF NOT ERRORLEVEL 1 GOTO MACHINE_EXISTS
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Append MACHINE variable to AUTOEXEC.BAT
|
||||||
|
ECHO SET MACHINE=%MACHINE% >> C:\AUTOEXEC.BAT
|
||||||
|
IF ERRORLEVEL 1 GOTO AUTOEXEC_ERROR
|
||||||
|
|
||||||
|
ECHO [OK] Added to AUTOEXEC.BAT: SET MACHINE=%MACHINE%
|
||||||
|
ECHO.
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
:MACHINE_EXISTS
|
||||||
|
ECHO [WARNING] MACHINE variable already exists in AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Current AUTOEXEC.BAT contains:
|
||||||
|
TYPE C:\AUTOEXEC.BAT | FIND "SET MACHINE="
|
||||||
|
ECHO.
|
||||||
|
ECHO Update MACHINE variable to %MACHINE%? (Y/N)
|
||||||
|
CHOICE /C:YN /N
|
||||||
|
IF ERRORLEVEL 2 GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO Manual edit required:
|
||||||
|
ECHO 1. Edit C:\AUTOEXEC.BAT
|
||||||
|
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...
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
:AUTOEXEC_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not update AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO You must manually add this line to C:\AUTOEXEC.BAT:
|
||||||
|
ECHO SET MACHINE=%MACHINE%
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to continue...
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM DEPLOYMENT COMPLETE
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:DEPLOYMENT_COMPLETE
|
||||||
|
CLS
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Deployment Complete!
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO The DOS Update System has been installed on this machine.
|
||||||
|
ECHO.
|
||||||
|
ECHO Machine name: %MACHINE%
|
||||||
|
ECHO Backup location: T:\%MACHINE%\BACKUP\
|
||||||
|
ECHO Update location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Available Commands:
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO NWTOC - Download updates from network
|
||||||
|
ECHO CTONW - Upload local changes to network
|
||||||
|
ECHO UPDATE - Backup entire C: drive to network
|
||||||
|
ECHO CHECKUPD - Check for available updates
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Next Steps:
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO 1. REBOOT this machine to activate MACHINE variable
|
||||||
|
ECHO Press Ctrl+Alt+Del to reboot
|
||||||
|
ECHO.
|
||||||
|
ECHO 2. After reboot, run NWTOC to download all updates:
|
||||||
|
ECHO C:\BAT\NWTOC
|
||||||
|
ECHO.
|
||||||
|
ECHO 3. Create initial backup:
|
||||||
|
ECHO C:\BAT\UPDATE
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO Deployment log saved to: T:\%MACHINE%\DEPLOY.LOG
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Create deployment log
|
||||||
|
ECHO Deployment completed: %DATE% %TIME% > T:\%MACHINE%\DEPLOY.LOG
|
||||||
|
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...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM CLEANUP AND EXIT
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:END
|
||||||
|
REM Clean up environment variables
|
||||||
|
SET MACHINE=
|
||||||
345
DEPLOY_VERIFY.BAT
Normal file
345
DEPLOY_VERIFY.BAT
Normal file
@@ -0,0 +1,345 @@
|
|||||||
|
@ECHO OFF
|
||||||
|
REM DEPLOY.BAT - One-time deployment script for DOS Update System
|
||||||
|
REM
|
||||||
|
REM Purpose: Installs the new NWTOC update system on DOS 6.22 machines
|
||||||
|
REM Location: Run from T:\COMMON\ProdSW\DEPLOY.BAT
|
||||||
|
REM
|
||||||
|
REM What this does:
|
||||||
|
REM 1. Backs up current AUTOEXEC.BAT
|
||||||
|
REM 2. Prompts for machine name (TS-4R, TS-7A, etc.)
|
||||||
|
REM 3. Updates AUTOEXEC.BAT with MACHINE variable
|
||||||
|
REM 4. Copies update batch files to C:\BAT\
|
||||||
|
REM 5. Runs initial NWTOC to download all updates
|
||||||
|
REM
|
||||||
|
REM Version: 1.0 - DOS 6.22 compatible
|
||||||
|
REM Last modified: 2026-01-19
|
||||||
|
|
||||||
|
CLS
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO DOS Update System - One-Time Deployment
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO This script will install the new update system on this machine.
|
||||||
|
ECHO.
|
||||||
|
ECHO What will be installed:
|
||||||
|
ECHO - NWTOC.BAT (Download updates from network)
|
||||||
|
ECHO - CTONW.BAT (Upload changes to network)
|
||||||
|
ECHO - UPDATE.BAT (Full system backup)
|
||||||
|
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.
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 1: Verify T: drive is accessible
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
ECHO [STEP 1/5] Checking network drive...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
T: 2>NUL
|
||||||
|
IF ERRORLEVEL 1 GOTO NO_T_DRIVE
|
||||||
|
|
||||||
|
C:
|
||||||
|
IF NOT EXIST T:\NUL GOTO NO_T_DRIVE
|
||||||
|
|
||||||
|
ECHO [OK] T: drive is accessible
|
||||||
|
ECHO T: = \\D2TESTNAS\test
|
||||||
|
ECHO.
|
||||||
|
GOTO CHECK_DEPLOY_FILES
|
||||||
|
|
||||||
|
:NO_T_DRIVE
|
||||||
|
C:
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] T: drive not available
|
||||||
|
ECHO.
|
||||||
|
ECHO The network drive T: must be mapped to \\D2TESTNAS\test
|
||||||
|
ECHO.
|
||||||
|
ECHO Run network startup first:
|
||||||
|
ECHO C:\NET\STARTNET.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Or map manually:
|
||||||
|
ECHO NET USE T: \\D2TESTNAS\test /YES
|
||||||
|
ECHO.
|
||||||
|
ECHO Then run DEPLOY.BAT again.
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 2: Verify deployment files exist on network
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:CHECK_DEPLOY_FILES
|
||||||
|
ECHO [STEP 2/5] Verifying deployment files...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\NWTOC.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\CTONW.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\UPDATE.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\STAGE.BAT GOTO MISSING_FILES
|
||||||
|
IF NOT EXIST T:\COMMON\ProdSW\CHECKUPD.BAT GOTO MISSING_FILES
|
||||||
|
|
||||||
|
ECHO [OK] All deployment files found on network
|
||||||
|
ECHO Location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
GOTO GET_MACHINE_NAME
|
||||||
|
|
||||||
|
:MISSING_FILES
|
||||||
|
ECHO [ERROR] Deployment files not found on network
|
||||||
|
ECHO.
|
||||||
|
ECHO Expected location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
ECHO Files needed:
|
||||||
|
ECHO - NWTOC.BAT
|
||||||
|
ECHO - CTONW.BAT
|
||||||
|
ECHO - UPDATE.BAT
|
||||||
|
ECHO - STAGE.BAT
|
||||||
|
ECHO - CHECKUPD.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Contact system administrator.
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 3: Get machine name from user
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:GET_MACHINE_NAME
|
||||||
|
ECHO [STEP 3/5] Configure machine name...
|
||||||
|
ECHO.
|
||||||
|
ECHO Enter this machine's name (e.g., TS-4R, TS-7A, TS-12B):
|
||||||
|
ECHO.
|
||||||
|
ECHO Machine name must match the folder on T: drive.
|
||||||
|
ECHO Example: If this is TS-4R, there should be T:\TS-4R\
|
||||||
|
ECHO.
|
||||||
|
SET /P MACHINE=Machine name:
|
||||||
|
|
||||||
|
REM Validate machine name was entered
|
||||||
|
IF "%MACHINE%"=="" GOTO MACHINE_NAME_EMPTY
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO [OK] Machine name: %MACHINE%
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Verify machine folder exists on network
|
||||||
|
ECHO Checking for T:\%MACHINE%\ folder...
|
||||||
|
IF NOT EXIST T:\%MACHINE%\NUL MD T:\%MACHINE%
|
||||||
|
IF NOT EXIST T:\%MACHINE%\NUL GOTO MACHINE_FOLDER_ERROR
|
||||||
|
|
||||||
|
ECHO [OK] Machine folder ready: T:\%MACHINE%\
|
||||||
|
ECHO.
|
||||||
|
GOTO BACKUP_AUTOEXEC
|
||||||
|
|
||||||
|
:MACHINE_NAME_EMPTY
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Machine name cannot be empty
|
||||||
|
ECHO.
|
||||||
|
GOTO GET_MACHINE_NAME
|
||||||
|
|
||||||
|
:MACHINE_FOLDER_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not create machine folder on network
|
||||||
|
ECHO.
|
||||||
|
ECHO Check:
|
||||||
|
ECHO - T: drive is writable
|
||||||
|
ECHO - Network connection is stable
|
||||||
|
ECHO - Permissions to create directories
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 4: Backup current AUTOEXEC.BAT and install batch files
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:BACKUP_AUTOEXEC
|
||||||
|
ECHO [STEP 4/5] Installing update system files...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Backup current AUTOEXEC.BAT
|
||||||
|
IF EXIST C:\AUTOEXEC.BAT (
|
||||||
|
ECHO Backing up AUTOEXEC.BAT...
|
||||||
|
COPY C:\AUTOEXEC.BAT C:\AUTOEXEC.SAV >NUL
|
||||||
|
IF ERRORLEVEL 1 GOTO BACKUP_ERROR
|
||||||
|
ECHO [OK] Backup created: C:\AUTOEXEC.SAV
|
||||||
|
) ELSE (
|
||||||
|
ECHO [WARNING] No existing AUTOEXEC.BAT found
|
||||||
|
)
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Create C:\BAT directory if it doesn't exist
|
||||||
|
IF NOT EXIST C:\BAT\NUL MD C:\BAT
|
||||||
|
IF NOT EXIST C:\BAT\NUL GOTO BAT_DIR_ERROR
|
||||||
|
|
||||||
|
ECHO Copying update system files to C:\BAT\...
|
||||||
|
|
||||||
|
REM Copy batch files from network to local machine
|
||||||
|
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] NWTOC.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] CTONW.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] UPDATE.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] STAGE.BAT
|
||||||
|
|
||||||
|
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y /Q
|
||||||
|
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||||
|
ECHO [OK] CHECKUPD.BAT
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO [OK] All update system files installed
|
||||||
|
ECHO.
|
||||||
|
GOTO UPDATE_AUTOEXEC
|
||||||
|
|
||||||
|
:BACKUP_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not backup AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Continue anyway? (Y/N)
|
||||||
|
CHOICE /C:YN /N
|
||||||
|
IF ERRORLEVEL 2 GOTO END
|
||||||
|
ECHO.
|
||||||
|
GOTO UPDATE_AUTOEXEC
|
||||||
|
|
||||||
|
:BAT_DIR_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not create C:\BAT directory
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to exit...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
:COPY_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Failed to copy files from network
|
||||||
|
ECHO.
|
||||||
|
ECHO Check:
|
||||||
|
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...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM STEP 5: Update AUTOEXEC.BAT with MACHINE variable
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:UPDATE_AUTOEXEC
|
||||||
|
ECHO [STEP 5/5] Updating AUTOEXEC.BAT...
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Check if MACHINE variable already exists in AUTOEXEC.BAT
|
||||||
|
IF EXIST C:\AUTOEXEC.BAT (
|
||||||
|
FIND "SET MACHINE=" C:\AUTOEXEC.BAT >NUL
|
||||||
|
IF NOT ERRORLEVEL 1 GOTO MACHINE_EXISTS
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Append MACHINE variable to AUTOEXEC.BAT
|
||||||
|
ECHO SET MACHINE=%MACHINE% >> C:\AUTOEXEC.BAT
|
||||||
|
IF ERRORLEVEL 1 GOTO AUTOEXEC_ERROR
|
||||||
|
|
||||||
|
ECHO [OK] Added to AUTOEXEC.BAT: SET MACHINE=%MACHINE%
|
||||||
|
ECHO.
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
:MACHINE_EXISTS
|
||||||
|
ECHO [WARNING] MACHINE variable already exists in AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO Current AUTOEXEC.BAT contains:
|
||||||
|
TYPE C:\AUTOEXEC.BAT | FIND "SET MACHINE="
|
||||||
|
ECHO.
|
||||||
|
ECHO Update MACHINE variable to %MACHINE%? (Y/N)
|
||||||
|
CHOICE /C:YN /N
|
||||||
|
IF ERRORLEVEL 2 GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
ECHO.
|
||||||
|
ECHO Manual edit required:
|
||||||
|
ECHO 1. Edit C:\AUTOEXEC.BAT
|
||||||
|
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...
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
:AUTOEXEC_ERROR
|
||||||
|
ECHO.
|
||||||
|
ECHO [ERROR] Could not update AUTOEXEC.BAT
|
||||||
|
ECHO.
|
||||||
|
ECHO You must manually add this line to C:\AUTOEXEC.BAT:
|
||||||
|
ECHO SET MACHINE=%MACHINE%
|
||||||
|
ECHO.
|
||||||
|
PAUSE Press any key to continue...
|
||||||
|
GOTO DEPLOYMENT_COMPLETE
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM DEPLOYMENT COMPLETE
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:DEPLOYMENT_COMPLETE
|
||||||
|
CLS
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Deployment Complete!
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO The DOS Update System has been installed on this machine.
|
||||||
|
ECHO.
|
||||||
|
ECHO Machine name: %MACHINE%
|
||||||
|
ECHO Backup location: T:\%MACHINE%\BACKUP\
|
||||||
|
ECHO Update location: T:\COMMON\ProdSW\
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Available Commands:
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO NWTOC - Download updates from network
|
||||||
|
ECHO CTONW - Upload local changes to network
|
||||||
|
ECHO UPDATE - Backup entire C: drive to network
|
||||||
|
ECHO CHECKUPD - Check for available updates
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO Next Steps:
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO 1. REBOOT this machine to activate MACHINE variable
|
||||||
|
ECHO Press Ctrl+Alt+Del to reboot
|
||||||
|
ECHO.
|
||||||
|
ECHO 2. After reboot, run NWTOC to download all updates:
|
||||||
|
ECHO C:\BAT\NWTOC
|
||||||
|
ECHO.
|
||||||
|
ECHO 3. Create initial backup:
|
||||||
|
ECHO C:\BAT\UPDATE
|
||||||
|
ECHO.
|
||||||
|
ECHO ==============================================================
|
||||||
|
ECHO.
|
||||||
|
ECHO Deployment log saved to: T:\%MACHINE%\DEPLOY.LOG
|
||||||
|
ECHO.
|
||||||
|
|
||||||
|
REM Create deployment log
|
||||||
|
ECHO Deployment completed: %DATE% %TIME% > T:\%MACHINE%\DEPLOY.LOG
|
||||||
|
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...
|
||||||
|
GOTO END
|
||||||
|
|
||||||
|
REM ==================================================================
|
||||||
|
REM CLEANUP AND EXIT
|
||||||
|
REM ==================================================================
|
||||||
|
|
||||||
|
:END
|
||||||
|
REM Clean up environment variables
|
||||||
|
SET MACHINE=
|
||||||
53
check-ad2-bat-files.ps1
Normal file
53
check-ad2-bat-files.ps1
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Check DEPLOY.BAT and UPDATE.BAT on AD2
|
||||||
|
|
||||||
|
$Username = "INTRANET\sysadmin"
|
||||||
|
$Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
||||||
|
$Cred = New-Object System.Management.Automation.PSCredential($Username, $Password)
|
||||||
|
|
||||||
|
Write-Host "[INFO] Connecting to AD2..."
|
||||||
|
|
||||||
|
New-PSDrive -Name TEMP_AD2 -PSProvider FileSystem -Root "\\192.168.0.6\C$" -Credential $Cred -ErrorAction Stop | Out-Null
|
||||||
|
|
||||||
|
Write-Host "[INFO] Checking DEPLOY.BAT and UPDATE.BAT..."
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
$DeployFile = Get-Item "TEMP_AD2:\Shares\test\DEPLOY.BAT" -ErrorAction SilentlyContinue
|
||||||
|
$UpdateFile = Get-Item "TEMP_AD2:\Shares\test\UPDATE.BAT" -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
|
if ($DeployFile) {
|
||||||
|
Write-Host "[OK] DEPLOY.BAT found on AD2"
|
||||||
|
Write-Host " Last Modified: $($DeployFile.LastWriteTime)"
|
||||||
|
Write-Host " Size: $($DeployFile.Length) bytes"
|
||||||
|
|
||||||
|
# Check line endings
|
||||||
|
$Content = Get-Content "TEMP_AD2:\Shares\test\DEPLOY.BAT" -Raw
|
||||||
|
if ($Content -match "`r`n") {
|
||||||
|
Write-Host " Line Endings: CRLF (DOS-compatible) [OK]"
|
||||||
|
} elseif ($Content -match "`n") {
|
||||||
|
Write-Host " Line Endings: LF only [WARNING]"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host "[ERROR] DEPLOY.BAT not found on AD2"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
if ($UpdateFile) {
|
||||||
|
Write-Host "[OK] UPDATE.BAT found on AD2"
|
||||||
|
Write-Host " Last Modified: $($UpdateFile.LastWriteTime)"
|
||||||
|
Write-Host " Size: $($UpdateFile.Length) bytes"
|
||||||
|
|
||||||
|
# Check line endings
|
||||||
|
$Content = Get-Content "TEMP_AD2:\Shares\test\UPDATE.BAT" -Raw
|
||||||
|
if ($Content -match "`r`n") {
|
||||||
|
Write-Host " Line Endings: CRLF (DOS-compatible) [OK]"
|
||||||
|
} elseif ($Content -match "`n") {
|
||||||
|
Write-Host " Line Endings: LF only [WARNING]"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host "[ERROR] UPDATE.BAT not found on AD2"
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-PSDrive TEMP_AD2
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "[INFO] Note: Files sync to NAS every 15 minutes via AD2's scheduled task"
|
||||||
20
check-ad2-sync-log.ps1
Normal file
20
check-ad2-sync-log.ps1
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Check AD2 sync log to verify NAS sync status
|
||||||
|
|
||||||
|
$Username = "INTRANET\sysadmin"
|
||||||
|
$Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
||||||
|
$Cred = New-Object System.Management.Automation.PSCredential($Username, $Password)
|
||||||
|
|
||||||
|
Write-Host "[INFO] Connecting to AD2 to check sync log..."
|
||||||
|
|
||||||
|
try {
|
||||||
|
$LogContent = Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock {
|
||||||
|
Get-Content 'C:\Shares\test\scripts\sync-from-nas.log' -Tail 30
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "[OK] Sync log retrieved:"
|
||||||
|
Write-Host ""
|
||||||
|
$LogContent | ForEach-Object { Write-Host $_ }
|
||||||
|
|
||||||
|
} catch {
|
||||||
|
Write-Host "[ERROR] Failed to connect to AD2: $_"
|
||||||
|
}
|
||||||
53
check-line-endings.ps1
Normal file
53
check-line-endings.ps1
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# Check line endings in BAT files
|
||||||
|
|
||||||
|
Write-Host "[INFO] Checking line endings..."
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
# Check original
|
||||||
|
$Original = Get-Content "DEPLOY.BAT" -Raw
|
||||||
|
$HasCRLF_Original = $Original -match "`r`n"
|
||||||
|
$HasLF_Original = $Original -match "[^`r]`n"
|
||||||
|
|
||||||
|
Write-Host "DEPLOY.BAT (Original):"
|
||||||
|
if ($HasCRLF_Original) {
|
||||||
|
Write-Host " [OK] Contains CRLF (DOS-compatible)"
|
||||||
|
} elseif ($HasLF_Original) {
|
||||||
|
Write-Host " [WARNING] Contains LF only (Unix format)"
|
||||||
|
} else {
|
||||||
|
Write-Host " [UNKNOWN] No line breaks detected"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
# Check NAS copy
|
||||||
|
if (Test-Path "DEPLOY_FROM_NAS.BAT") {
|
||||||
|
$FromNAS = Get-Content "DEPLOY_FROM_NAS.BAT" -Raw
|
||||||
|
$HasCRLF_NAS = $FromNAS -match "`r`n"
|
||||||
|
$HasLF_NAS = $FromNAS -match "[^`r]`n"
|
||||||
|
|
||||||
|
Write-Host "DEPLOY_FROM_NAS.BAT (From NAS):"
|
||||||
|
if ($HasCRLF_NAS) {
|
||||||
|
Write-Host " [OK] Contains CRLF (DOS-compatible)"
|
||||||
|
} elseif ($HasLF_NAS) {
|
||||||
|
Write-Host " [ERROR] Contains LF only (Unix format - DOS won't work!)"
|
||||||
|
} else {
|
||||||
|
Write-Host " [UNKNOWN] No line breaks detected"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Compare file sizes
|
||||||
|
$OrigSize = (Get-Item "DEPLOY.BAT").Length
|
||||||
|
$NASSize = (Get-Item "DEPLOY_FROM_NAS.BAT").Length
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "File Sizes:"
|
||||||
|
Write-Host " Original: $OrigSize bytes"
|
||||||
|
Write-Host " From NAS: $NASSize bytes"
|
||||||
|
|
||||||
|
if ($OrigSize -ne $NASSize) {
|
||||||
|
Write-Host " [WARNING] Size mismatch - line endings may have been converted"
|
||||||
|
} else {
|
||||||
|
Write-Host " [OK] Sizes match"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host "[ERROR] DEPLOY_FROM_NAS.BAT not found"
|
||||||
|
}
|
||||||
15
check-pscp-usage.ps1
Normal file
15
check-pscp-usage.ps1
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Check PSCP usage in AD2 sync script
|
||||||
|
|
||||||
|
$Username = "INTRANET\sysadmin"
|
||||||
|
$Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
||||||
|
$Cred = New-Object System.Management.Automation.PSCredential($Username, $Password)
|
||||||
|
|
||||||
|
Write-Host "[INFO] Checking PSCP usage in Sync-FromNAS.ps1..."
|
||||||
|
|
||||||
|
$PSCPLines = Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock {
|
||||||
|
Get-Content 'C:\Shares\test\scripts\Sync-FromNAS.ps1' | Select-String -Pattern 'pscp|plink' -Context 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "[INFO] PSCP/PLINK usage found:"
|
||||||
|
$PSCPLines | ForEach-Object { Write-Host $_ }
|
||||||
21
check-scp-commands.ps1
Normal file
21
check-scp-commands.ps1
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# Check SCP command details in sync script
|
||||||
|
|
||||||
|
$Username = "INTRANET\sysadmin"
|
||||||
|
$Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
||||||
|
$Cred = New-Object System.Management.Automation.PSCredential($Username, $Password)
|
||||||
|
|
||||||
|
Write-Host "[INFO] Finding SCP commands in Sync-FromNAS.ps1..."
|
||||||
|
|
||||||
|
$SCPCommands = Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock {
|
||||||
|
Get-Content 'C:\Shares\test\scripts\Sync-FromNAS.ps1' | Select-String -Pattern '\$SCP ' -Context 0
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "[INFO] SCP commands found:"
|
||||||
|
$SCPCommands | ForEach-Object { Write-Host $_ }
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "[INFO] Analysis:"
|
||||||
|
Write-Host "OpenSSH scp can convert line endings in text mode."
|
||||||
|
Write-Host "Solution: Add -O flag to use legacy SCP protocol (binary mode)"
|
||||||
|
Write-Host "Or: Add -T flag to disable pseudo-terminal"
|
||||||
69
deploy-all-bat-files.ps1
Normal file
69
deploy-all-bat-files.ps1
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
# Deploy all DOS BAT files to AD2 for distribution to DOS machines
|
||||||
|
|
||||||
|
$Username = "INTRANET\sysadmin"
|
||||||
|
$Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
||||||
|
$Cred = New-Object System.Management.Automation.PSCredential($Username, $Password)
|
||||||
|
|
||||||
|
# Files to deploy
|
||||||
|
$BATFiles = @(
|
||||||
|
"UPDATE.BAT", # Machine backup utility
|
||||||
|
"NWTOC.BAT", # Network to Computer (pull updates)
|
||||||
|
"CTONW.BAT", # Computer to Network (push files)
|
||||||
|
"CHECKUPD.BAT", # Check for updates
|
||||||
|
"REBOOT.BAT", # Reboot utility
|
||||||
|
"DEPLOY.BAT" # One-time deployment installer
|
||||||
|
)
|
||||||
|
|
||||||
|
Write-Host "[INFO] Connecting to AD2..."
|
||||||
|
New-PSDrive -Name TEMP_AD2 -PSProvider FileSystem -Root "\\192.168.0.6\C$" -Credential $Cred -ErrorAction Stop | Out-Null
|
||||||
|
|
||||||
|
Write-Host "[INFO] Deploying BAT files to AD2..."
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
$TotalFiles = 0
|
||||||
|
$SuccessCount = 0
|
||||||
|
|
||||||
|
foreach ($File in $BATFiles) {
|
||||||
|
if (Test-Path $File) {
|
||||||
|
Write-Host " Processing: $File"
|
||||||
|
|
||||||
|
# Verify CRLF before copying
|
||||||
|
$Content = Get-Content $File -Raw
|
||||||
|
if ($Content -match "`r`n") {
|
||||||
|
Write-Host " [OK] CRLF verified"
|
||||||
|
|
||||||
|
# Copy to root (for DEPLOY.BAT and UPDATE.BAT access)
|
||||||
|
if ($File -in @("DEPLOY.BAT", "UPDATE.BAT")) {
|
||||||
|
Copy-Item $File "TEMP_AD2:\Shares\test\" -Force
|
||||||
|
Write-Host " [OK] Copied to root: C:\Shares\test\"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Copy to COMMON\ProdSW (for all machines)
|
||||||
|
Copy-Item $File "TEMP_AD2:\Shares\test\COMMON\ProdSW\" -Force
|
||||||
|
Write-Host " [OK] Copied to COMMON\ProdSW\"
|
||||||
|
|
||||||
|
# Also copy to _COMMON\ProdSW (backup location)
|
||||||
|
Copy-Item $File "TEMP_AD2:\Shares\test\_COMMON\ProdSW\" -Force
|
||||||
|
Write-Host " [OK] Copied to _COMMON\ProdSW\"
|
||||||
|
|
||||||
|
$SuccessCount++
|
||||||
|
} else {
|
||||||
|
Write-Host " [ERROR] No CRLF found - skipping"
|
||||||
|
}
|
||||||
|
|
||||||
|
$TotalFiles++
|
||||||
|
Write-Host ""
|
||||||
|
} else {
|
||||||
|
Write-Host " [WARNING] $File not found - skipping"
|
||||||
|
Write-Host ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-PSDrive TEMP_AD2
|
||||||
|
|
||||||
|
Write-Host "[SUCCESS] Deployment complete"
|
||||||
|
Write-Host " Files processed: $TotalFiles"
|
||||||
|
Write-Host " Files deployed: $SuccessCount"
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "[INFO] Files will sync to NAS within 15 minutes"
|
||||||
|
Write-Host "[INFO] DOS machines can then run NWTOC to get updates"
|
||||||
55
deploy-bat-to-nas-direct.ps1
Normal file
55
deploy-bat-to-nas-direct.ps1
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
# Deploy BAT files directly to NAS with CRLF preservation
|
||||||
|
|
||||||
|
$BATFiles = @(
|
||||||
|
"DEPLOY.BAT",
|
||||||
|
"UPDATE.BAT",
|
||||||
|
"NWTOC.BAT",
|
||||||
|
"CTONW.BAT",
|
||||||
|
"CHECKUPD.BAT",
|
||||||
|
"REBOOT.BAT"
|
||||||
|
)
|
||||||
|
|
||||||
|
Write-Host "[INFO] Deploying BAT files directly to NAS..."
|
||||||
|
Write-Host "[INFO] Using SCP with -O flag (binary mode, preserves CRLF)"
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
$SuccessCount = 0
|
||||||
|
$TotalFiles = 0
|
||||||
|
|
||||||
|
foreach ($File in $BATFiles) {
|
||||||
|
if (Test-Path $File) {
|
||||||
|
Write-Host " Deploying: $File"
|
||||||
|
|
||||||
|
# Verify CRLF before sending
|
||||||
|
$Content = Get-Content $File -Raw
|
||||||
|
if ($Content -match "`r`n") {
|
||||||
|
$Size = (Get-Item $File).Length
|
||||||
|
Write-Host " Size: $Size bytes (with CRLF)"
|
||||||
|
|
||||||
|
# Copy to NAS root (/data/test/)
|
||||||
|
$result = & 'C:\Windows\System32\OpenSSH\scp.exe' -O $File root@192.168.0.9:/data/test/ 2>&1
|
||||||
|
|
||||||
|
if ($LASTEXITCODE -eq 0) {
|
||||||
|
Write-Host " [SUCCESS] Copied to /data/test/$File"
|
||||||
|
$SuccessCount++
|
||||||
|
} else {
|
||||||
|
Write-Host " [ERROR] Failed: $result"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host " [ERROR] No CRLF found - skipping"
|
||||||
|
}
|
||||||
|
|
||||||
|
$TotalFiles++
|
||||||
|
Write-Host ""
|
||||||
|
} else {
|
||||||
|
Write-Host " [WARNING] $File not found"
|
||||||
|
Write-Host ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "[COMPLETE] Direct deployment to NAS"
|
||||||
|
Write-Host " Files processed: $TotalFiles"
|
||||||
|
Write-Host " Files deployed: $SuccessCount"
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "[INFO] Files are now available at T:\ for DOS machines"
|
||||||
|
Write-Host "[INFO] Test DEPLOY.BAT on a DOS machine to verify CRLF"
|
||||||
18
diagnose-nas-ssh.ps1
Normal file
18
diagnose-nas-ssh.ps1
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Diagnose D2TESTNAS SSH connection issues
|
||||||
|
|
||||||
|
Write-Host "[INFO] Testing SSH connection to D2TESTNAS (192.168.0.9)..."
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
# Try SSH with verbose output
|
||||||
|
$Output = & ssh -v root@192.168.0.9 "echo 'Connection successful'" 2>&1
|
||||||
|
|
||||||
|
Write-Host "[INFO] SSH Output:"
|
||||||
|
$Output | ForEach-Object { Write-Host $_ }
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "[INFO] If key authentication is failing, you can:"
|
||||||
|
Write-Host " 1. Access web interface: http://192.168.0.9/"
|
||||||
|
Write-Host " User: admin, Password: Paper123!@#-nas"
|
||||||
|
Write-Host " 2. Check SSH service status"
|
||||||
|
Write-Host " 3. Verify authorized_keys file"
|
||||||
|
Write-Host " 4. Restart SSH service if needed"
|
||||||
47
fix-ad2-scp-line-endings.ps1
Normal file
47
fix-ad2-scp-line-endings.ps1
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# Fix AD2 Sync-FromNAS.ps1 to preserve CRLF line endings
|
||||||
|
# Add -O flag to SCP commands to use legacy protocol (binary mode)
|
||||||
|
|
||||||
|
$Username = "INTRANET\sysadmin"
|
||||||
|
$Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
||||||
|
$Cred = New-Object System.Management.Automation.PSCredential($Username, $Password)
|
||||||
|
|
||||||
|
Write-Host "[INFO] Connecting to AD2..."
|
||||||
|
|
||||||
|
# Read the current script
|
||||||
|
$ScriptContent = Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock {
|
||||||
|
Get-Content 'C:\Shares\test\scripts\Sync-FromNAS.ps1' -Raw
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "[INFO] Current script retrieved"
|
||||||
|
|
||||||
|
# Create backup
|
||||||
|
$BackupName = "Sync-FromNAS_backup_$(Get-Date -Format 'yyyyMMdd_HHmmss').ps1"
|
||||||
|
Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock {
|
||||||
|
param($Content, $Backup)
|
||||||
|
Set-Content "C:\Shares\test\scripts\$Backup" -Value $Content
|
||||||
|
} -ArgumentList $ScriptContent, $BackupName
|
||||||
|
|
||||||
|
Write-Host "[OK] Backup created: $BackupName"
|
||||||
|
|
||||||
|
# Fix the script - Add -O flag to SCP commands
|
||||||
|
$FixedContent = $ScriptContent -replace '& \$SCP -o StrictHostKeyChecking', '& $SCP -O -o StrictHostKeyChecking'
|
||||||
|
|
||||||
|
# Count changes
|
||||||
|
$Changes = ([regex]::Matches($FixedContent, '-O -o')).Count
|
||||||
|
Write-Host "[INFO] Adding -O flag to $Changes SCP commands"
|
||||||
|
|
||||||
|
# Upload fixed script
|
||||||
|
Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock {
|
||||||
|
param($Content)
|
||||||
|
Set-Content 'C:\Shares\test\scripts\Sync-FromNAS.ps1' -Value $Content
|
||||||
|
} -ArgumentList $FixedContent
|
||||||
|
|
||||||
|
Write-Host "[SUCCESS] Sync-FromNAS.ps1 updated on AD2"
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "[INFO] The -O flag forces legacy SCP protocol (binary mode)"
|
||||||
|
Write-Host "[INFO] This prevents line ending conversion (CRLF preserved)"
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "Next steps:"
|
||||||
|
Write-Host " 1. Redeploy DEPLOY.BAT and UPDATE.BAT to AD2"
|
||||||
|
Write-Host " 2. Wait for next sync cycle (runs every 15 minutes)"
|
||||||
|
Write-Host " 3. Verify CRLF preserved on NAS"
|
||||||
18
trigger-ad2-sync-now.ps1
Normal file
18
trigger-ad2-sync-now.ps1
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Manually trigger AD2 sync script to test CRLF preservation
|
||||||
|
|
||||||
|
$Username = "INTRANET\sysadmin"
|
||||||
|
$Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
||||||
|
$Cred = New-Object System.Management.Automation.PSCredential($Username, $Password)
|
||||||
|
|
||||||
|
Write-Host "[INFO] Triggering sync on AD2..."
|
||||||
|
|
||||||
|
$SyncResult = Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock {
|
||||||
|
# Run the sync script
|
||||||
|
& 'C:\Shares\test\scripts\Sync-FromNAS.ps1'
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "[INFO] Sync output:"
|
||||||
|
$SyncResult | ForEach-Object { Write-Host $_ }
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "[INFO] Sync triggered. Checking results..."
|
||||||
29
verify-ad2-line-endings.ps1
Normal file
29
verify-ad2-line-endings.ps1
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
# Verify line endings on AD2 and copy fresh to NAS
|
||||||
|
|
||||||
|
$Username = "INTRANET\sysadmin"
|
||||||
|
$Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
||||||
|
$Cred = New-Object System.Management.Automation.PSCredential($Username, $Password)
|
||||||
|
|
||||||
|
Write-Host "[INFO] Connecting to AD2..."
|
||||||
|
New-PSDrive -Name TEMP_AD2 -PSProvider FileSystem -Root "\\192.168.0.6\C$" -Credential $Cred -ErrorAction Stop | Out-Null
|
||||||
|
|
||||||
|
Write-Host "[INFO] Reading DEPLOY.BAT from AD2..."
|
||||||
|
$Content = Get-Content "TEMP_AD2:\Shares\test\DEPLOY.BAT" -Raw
|
||||||
|
|
||||||
|
if ($Content -match "`r`n") {
|
||||||
|
Write-Host "[OK] AD2 file has CRLF line endings"
|
||||||
|
|
||||||
|
# Copy to temp location
|
||||||
|
Copy-Item "TEMP_AD2:\Shares\test\DEPLOY.BAT" ".\DEPLOY_FROM_AD2.BAT" -Force
|
||||||
|
Write-Host "[OK] Copied DEPLOY.BAT from AD2 to local temp"
|
||||||
|
} else {
|
||||||
|
Write-Host "[ERROR] AD2 file has wrong line endings!"
|
||||||
|
}
|
||||||
|
|
||||||
|
Remove-PSDrive TEMP_AD2
|
||||||
|
|
||||||
|
# Now check local file
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "[INFO] Verifying local copy..."
|
||||||
|
$result = & cmd /c "type DEPLOY_FROM_AD2.BAT | find /c `"@ECHO`""
|
||||||
|
Write-Host "[OK] Local file readable"
|
||||||
36
verify-nas-crlf.ps1
Normal file
36
verify-nas-crlf.ps1
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Verify CRLF preservation after sync fix
|
||||||
|
|
||||||
|
Write-Host "[INFO] Verifying CRLF on files from NAS..."
|
||||||
|
Write-Host ""
|
||||||
|
|
||||||
|
# Copy fresh from NAS using -O flag (binary mode)
|
||||||
|
Write-Host "[INFO] Copying DEPLOY.BAT from NAS..."
|
||||||
|
& 'C:\Windows\System32\OpenSSH\scp.exe' -O root@192.168.0.9:/data/test/DEPLOY.BAT ./DEPLOY_VERIFY.BAT 2>$null
|
||||||
|
|
||||||
|
if (Test-Path "DEPLOY_VERIFY.BAT") {
|
||||||
|
$Content = Get-Content "DEPLOY_VERIFY.BAT" -Raw
|
||||||
|
$Size = (Get-Item "DEPLOY_VERIFY.BAT").Length
|
||||||
|
|
||||||
|
Write-Host "[INFO] File size: $Size bytes"
|
||||||
|
|
||||||
|
if ($Content -match "`r`n") {
|
||||||
|
Write-Host "[SUCCESS] CRLF preserved on NAS!"
|
||||||
|
} else {
|
||||||
|
Write-Host "[ERROR] Still LF only - sync may not have run yet"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Compare with original
|
||||||
|
$OrigSize = (Get-Item "DEPLOY.BAT").Length
|
||||||
|
Write-Host "[INFO] Original size: $OrigSize bytes"
|
||||||
|
|
||||||
|
if ($Size -eq $OrigSize) {
|
||||||
|
Write-Host "[OK] Sizes match - line endings preserved"
|
||||||
|
} else {
|
||||||
|
Write-Host "[WARNING] Size mismatch - may need another sync cycle"
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Write-Host "[ERROR] Failed to copy from NAS"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host ""
|
||||||
|
Write-Host "[INFO] Note: If still LF only, wait for next sync cycle (every 15 min)"
|
||||||
Reference in New Issue
Block a user