Files
claudetools/deploy-all-bat-files.ps1
Mike Swanson f35d65beaa 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>
2026-01-19 16:35:33 -07:00

70 lines
2.3 KiB
PowerShell

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