From f35d65beaa8a2b04500e5cc4cf7520b50492e3be Mon Sep 17 00:00:00 2001 From: Mike Swanson Date: Mon, 19 Jan 2026 16:35:33 -0700 Subject: [PATCH] fix: Preserve CRLF line endings in DOS BAT files during sync MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- DEPLOY_FROM_AD2.BAT | 345 +++++++++++++++++++++++++++++++++++ DEPLOY_FROM_NAS.BAT | 345 +++++++++++++++++++++++++++++++++++ DEPLOY_TEST.BAT | 345 +++++++++++++++++++++++++++++++++++ DEPLOY_VERIFY.BAT | 345 +++++++++++++++++++++++++++++++++++ check-ad2-bat-files.ps1 | 53 ++++++ check-ad2-sync-log.ps1 | 20 ++ check-line-endings.ps1 | 53 ++++++ check-pscp-usage.ps1 | 15 ++ check-scp-commands.ps1 | 21 +++ deploy-all-bat-files.ps1 | 69 +++++++ deploy-bat-to-nas-direct.ps1 | 55 ++++++ diagnose-nas-ssh.ps1 | 18 ++ fix-ad2-scp-line-endings.ps1 | 47 +++++ trigger-ad2-sync-now.ps1 | 18 ++ verify-ad2-line-endings.ps1 | 29 +++ verify-nas-crlf.ps1 | 36 ++++ 16 files changed, 1814 insertions(+) create mode 100644 DEPLOY_FROM_AD2.BAT create mode 100644 DEPLOY_FROM_NAS.BAT create mode 100644 DEPLOY_TEST.BAT create mode 100644 DEPLOY_VERIFY.BAT create mode 100644 check-ad2-bat-files.ps1 create mode 100644 check-ad2-sync-log.ps1 create mode 100644 check-line-endings.ps1 create mode 100644 check-pscp-usage.ps1 create mode 100644 check-scp-commands.ps1 create mode 100644 deploy-all-bat-files.ps1 create mode 100644 deploy-bat-to-nas-direct.ps1 create mode 100644 diagnose-nas-ssh.ps1 create mode 100644 fix-ad2-scp-line-endings.ps1 create mode 100644 trigger-ad2-sync-now.ps1 create mode 100644 verify-ad2-line-endings.ps1 create mode 100644 verify-nas-crlf.ps1 diff --git a/DEPLOY_FROM_AD2.BAT b/DEPLOY_FROM_AD2.BAT new file mode 100644 index 0000000..8f5bd6d --- /dev/null +++ b/DEPLOY_FROM_AD2.BAT @@ -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= diff --git a/DEPLOY_FROM_NAS.BAT b/DEPLOY_FROM_NAS.BAT new file mode 100644 index 0000000..8f5bd6d --- /dev/null +++ b/DEPLOY_FROM_NAS.BAT @@ -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= diff --git a/DEPLOY_TEST.BAT b/DEPLOY_TEST.BAT new file mode 100644 index 0000000..8f5bd6d --- /dev/null +++ b/DEPLOY_TEST.BAT @@ -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= diff --git a/DEPLOY_VERIFY.BAT b/DEPLOY_VERIFY.BAT new file mode 100644 index 0000000..8f5bd6d --- /dev/null +++ b/DEPLOY_VERIFY.BAT @@ -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= diff --git a/check-ad2-bat-files.ps1 b/check-ad2-bat-files.ps1 new file mode 100644 index 0000000..12e9cd4 --- /dev/null +++ b/check-ad2-bat-files.ps1 @@ -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" diff --git a/check-ad2-sync-log.ps1 b/check-ad2-sync-log.ps1 new file mode 100644 index 0000000..9be5cef --- /dev/null +++ b/check-ad2-sync-log.ps1 @@ -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: $_" +} diff --git a/check-line-endings.ps1 b/check-line-endings.ps1 new file mode 100644 index 0000000..eb8322f --- /dev/null +++ b/check-line-endings.ps1 @@ -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" +} diff --git a/check-pscp-usage.ps1 b/check-pscp-usage.ps1 new file mode 100644 index 0000000..e0d39ce --- /dev/null +++ b/check-pscp-usage.ps1 @@ -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 $_ } diff --git a/check-scp-commands.ps1 b/check-scp-commands.ps1 new file mode 100644 index 0000000..2b0b578 --- /dev/null +++ b/check-scp-commands.ps1 @@ -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" diff --git a/deploy-all-bat-files.ps1 b/deploy-all-bat-files.ps1 new file mode 100644 index 0000000..7a99ebf --- /dev/null +++ b/deploy-all-bat-files.ps1 @@ -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" diff --git a/deploy-bat-to-nas-direct.ps1 b/deploy-bat-to-nas-direct.ps1 new file mode 100644 index 0000000..2fe8c91 --- /dev/null +++ b/deploy-bat-to-nas-direct.ps1 @@ -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" diff --git a/diagnose-nas-ssh.ps1 b/diagnose-nas-ssh.ps1 new file mode 100644 index 0000000..c1b581e --- /dev/null +++ b/diagnose-nas-ssh.ps1 @@ -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" diff --git a/fix-ad2-scp-line-endings.ps1 b/fix-ad2-scp-line-endings.ps1 new file mode 100644 index 0000000..345e6a1 --- /dev/null +++ b/fix-ad2-scp-line-endings.ps1 @@ -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" diff --git a/trigger-ad2-sync-now.ps1 b/trigger-ad2-sync-now.ps1 new file mode 100644 index 0000000..d16e29f --- /dev/null +++ b/trigger-ad2-sync-now.ps1 @@ -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..." diff --git a/verify-ad2-line-endings.ps1 b/verify-ad2-line-endings.ps1 new file mode 100644 index 0000000..b3c2fba --- /dev/null +++ b/verify-ad2-line-endings.ps1 @@ -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" diff --git a/verify-nas-crlf.ps1 b/verify-nas-crlf.ps1 new file mode 100644 index 0000000..0a8f31f --- /dev/null +++ b/verify-nas-crlf.ps1 @@ -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)"