fix: Replace NUL device references with DOS 6.22 compatible tests
Critical fix for DOS 6.22 compatibility - NUL is a reserved device name in both DOS and Windows and cannot be used as a file/directory name. Problem: - "T: 2>NUL" attempts to create a file called "NUL" (not allowed) - "IF NOT EXIST T:\NUL" tests for NUL device (unreliable) - "IF NOT EXIST path\NUL" treats NUL as filename (invalid) Solution - Replaced with proper DOS 6.22 tests: - "T: 2>NUL" → "DIR T:\ >nul" (test drive access via directory listing) - "IF NOT EXIST T:\NUL" → "IF NOT EXIST T:\*.*" (test for any files) - "IF NOT EXIST path\NUL" → "IF NOT EXIST path\*.*" (test directory) Note: Using lowercase "nul" for output redirection is acceptable as it redirects to the NUL device, but NUL as a filename/path is invalid. Files updated: - DEPLOY.BAT: Fixed drive and directory tests - UPDATE.BAT: Fixed drive and directory tests - NWTOC.BAT: Fixed drive and directory tests - CTONW.BAT: Fixed drive and directory tests - CHECKUPD.BAT: Fixed drive and directory tests - DOSTEST.BAT: Fixed drive and directory tests Created fix-nul-references.ps1: - Automated script to find and fix NUL references - Preserves CRLF line endings - Updates all BAT files consistently Created monitoring scripts: - monitor-sync-status.ps1: Periodic sync monitoring - quick-sync-check.ps1: Quick AD2-to-NAS sync status check Verification: - All BAT files maintain CRLF line terminators - File sizes increased slightly (4-8 bytes) due to pattern changes - DOS 6.22 compatible wildcard tests (*.*) used throughout Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
76
monitor-sync-status.ps1
Normal file
76
monitor-sync-status.ps1
Normal file
@@ -0,0 +1,76 @@
|
||||
# Monitor AD2-to-NAS sync status periodically
|
||||
|
||||
param(
|
||||
[int]$Checks = 5,
|
||||
[int]$IntervalMinutes = 3
|
||||
)
|
||||
|
||||
$Username = "INTRANET\sysadmin"
|
||||
$Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
||||
$Cred = New-Object System.Management.Automation.PSCredential($Username, $Password)
|
||||
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host "AD2-to-NAS Sync Monitor" -ForegroundColor Cyan
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host "Checks: $Checks (every $IntervalMinutes minutes)"
|
||||
Write-Host "Monitoring CRLF preservation on synced files"
|
||||
Write-Host ""
|
||||
|
||||
for ($i = 1; $i -le $Checks; $i++) {
|
||||
$Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
|
||||
Write-Host "[$Timestamp] Check $i of $Checks" -ForegroundColor Yellow
|
||||
Write-Host "----------------------------------------"
|
||||
|
||||
# Check AD2 sync log (last 10 lines)
|
||||
try {
|
||||
$LogTail = Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock {
|
||||
Get-Content 'C:\Shares\test\scripts\sync-from-nas.log' -Tail 10
|
||||
}
|
||||
|
||||
Write-Host "[INFO] Recent sync log entries:"
|
||||
$LogTail | ForEach-Object { Write-Host " $_" }
|
||||
Write-Host ""
|
||||
|
||||
} catch {
|
||||
Write-Host "[ERROR] Could not read AD2 sync log: $_" -ForegroundColor Red
|
||||
Write-Host ""
|
||||
}
|
||||
|
||||
# Check NAS file timestamps and CRLF
|
||||
Write-Host "[INFO] Checking DEPLOY.BAT on NAS..."
|
||||
$NASInfo = & 'C:\Windows\System32\OpenSSH\ssh.exe' -o BatchMode=yes root@192.168.0.9 'ls -la /data/test/DEPLOY.BAT' 2>&1
|
||||
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Host " $NASInfo"
|
||||
|
||||
# Copy and verify CRLF
|
||||
& 'C:\Windows\System32\OpenSSH\scp.exe' -O root@192.168.0.9:/data/test/DEPLOY.BAT ./DEPLOY_MONITOR.BAT 2>$null
|
||||
|
||||
if (Test-Path "DEPLOY_MONITOR.BAT") {
|
||||
$Content = Get-Content "DEPLOY_MONITOR.BAT" -Raw
|
||||
$Size = (Get-Item "DEPLOY_MONITOR.BAT").Length
|
||||
|
||||
if ($Content -match "`r`n") {
|
||||
Write-Host " [SUCCESS] CRLF preserved ($Size bytes)" -ForegroundColor Green
|
||||
} else {
|
||||
Write-Host " [WARNING] LF only ($Size bytes)" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
Remove-Item "DEPLOY_MONITOR.BAT" -Force
|
||||
}
|
||||
} else {
|
||||
Write-Host " [ERROR] Could not access NAS" -ForegroundColor Red
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
|
||||
if ($i -lt $Checks) {
|
||||
Write-Host "Waiting $IntervalMinutes minutes until next check..."
|
||||
Write-Host ""
|
||||
Start-Sleep -Seconds ($IntervalMinutes * 60)
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Write-Host "Monitoring Complete" -ForegroundColor Cyan
|
||||
Write-Host "========================================" -ForegroundColor Cyan
|
||||
Reference in New Issue
Block a user