Files
claudetools/clients/dataforth/scripts/check-dos-compatibility.ps1
Mike Swanson 5cbd49ce24 Reorganize repo: compartmentalize scripts by client/project
Move 150+ scripts from root and scripts/ into client/project directories:
- clients/dataforth/scripts/ (110 files: AD2, sync, SSH, DB, DOS scripts)
- clients/bg-builders/scripts/ (14 files: Lesley mgmt, Exchange, termination)
- clients/internal-infrastructure/scripts/ (10 files: GDAP, Gitea, backups)
- projects/msp-tools/scripts/ (9 files: CIPP, MSP onboarding, Datto)
- projects/gururmm-agent/scripts/ (3 files: API test, JWT, record counts)
- clients/glaztech/scripts/ (1 file: CentraStage removal)

Also reorganized:
- VPN scripts → infrastructure/vpn-configs/
- Retrieved API/JS files → api/
- Forum posts → projects/community-forum/forum-posts/
- SSH docs → clients/internal-infrastructure/docs/
- NWTOC/CTONW docs → projects/wrightstown-smarthome/docs/
- ACG website files → projects/internal/acg-website-2025/
- Dataforth docs → clients/dataforth/docs/
- schema-retrieved.sql → docs/database/

Deleted 24 tmp_*.ps1 one-off debug scripts (preserved in git history).
Root reduced from 220+ files to 62 items (docs + directories only).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 17:15:07 -07:00

75 lines
3.5 KiB
PowerShell

# Comprehensive DOS 6.22 compatibility checker
# Scans all BAT files for incompatible commands
$BATFiles = Get-ChildItem *.BAT | Where-Object { $_.Name -notlike "*_FROM_*" -and $_.Name -notlike "*_TEST*" -and $_.Name -notlike "*_VERIFY*" -and $_.Name -notlike "*_CHECK*" -and $_.Name -notlike "*_MONITOR*" }
Write-Host "========================================" -ForegroundColor Red
Write-Host "DOS 6.22 COMPATIBILITY CHECK" -ForegroundColor Red
Write-Host "========================================" -ForegroundColor Red
Write-Host ""
$TotalIssues = 0
# DOS 6.22 INCOMPATIBLE patterns
$IncompatiblePatterns = @(
@{Pattern='SET\s+/P'; Description='SET /P (interactive input) - NOT in DOS 6.22'},
@{Pattern='SET\s+/A'; Description='SET /A (arithmetic) - NOT in DOS 6.22'},
@{Pattern='IF\s+/I'; Description='IF /I (case-insensitive) - NOT in DOS 6.22'},
@{Pattern='FOR\s+/F'; Description='FOR /F (parse files) - NOT in DOS 6.22'},
@{Pattern='FOR\s+/L'; Description='FOR /L (loop) - NOT in DOS 6.22'},
@{Pattern='FOR\s+/D'; Description='FOR /D (directories) - NOT in DOS 6.22'},
@{Pattern='FOR\s+/R'; Description='FOR /R (recursive) - NOT in DOS 6.22'},
@{Pattern='GOTO\s+:EOF'; Description='GOTO :EOF - NOT in DOS 6.22 (use GOTO END)'},
@{Pattern='%COMPUTERNAME%'; Description='%COMPUTERNAME% - NOT in DOS 6.22'},
@{Pattern='%USERNAME%'; Description='%USERNAME% - NOT in DOS 6.22'},
@{Pattern='%USERPROFILE%'; Description='%USERPROFILE% - NOT in DOS 6.22'},
@{Pattern='&&'; Description='&& operator - NOT in DOS 6.22'},
@{Pattern='\|\|'; Description='|| operator - NOT in DOS 6.22'},
@{Pattern='\\NUL(?!\s|$)'; Description='\NUL as filename - INVALID (use \*.* for directory test)'},
@{Pattern='XCOPY.*\/Q'; Description='XCOPY /Q (quiet mode) - NOT in DOS 6.22'},
@{Pattern='IF.*\('; Description='IF ( ... ) multi-line blocks - NOT in DOS 6.22 (use GOTO labels)'},
@{Pattern='\)\s*ELSE\s*\('; Description=') ELSE ( clause - NOT in DOS 6.22 (use GOTO labels)'},
@{Pattern='^PAUSE\s+'; Description='PAUSE message - NOT in DOS 6.22 (use ECHO then PAUSE)'},
@{Pattern='\|.*\|.*>>'; Description='Double pipe with redirect (|..|..>>) - NOT reliable in DOS 6.22 (use temp files)'},
@{Pattern='CHOICE\s+/[A-Z]'; Description='CHOICE with options - Check if CHOICE.COM available'},
@{Pattern='START\s+'; Description='START command - NOT in DOS 6.22'}
)
foreach ($File in $BATFiles) {
Write-Host "Checking: $($File.Name)" -ForegroundColor Cyan
$Content = Get-Content $File.FullName
$FileIssues = 0
foreach ($Pattern in $IncompatiblePatterns) {
$LineNum = 0
foreach ($Line in $Content) {
$LineNum++
if ($Line -match $Pattern.Pattern) {
if ($FileIssues -eq 0) {
Write-Host ""
}
Write-Host " [ERROR] Line $LineNum : $($Pattern.Description)" -ForegroundColor Red
Write-Host " > $Line" -ForegroundColor Yellow
$FileIssues++
$TotalIssues++
}
}
}
if ($FileIssues -eq 0) {
Write-Host " [OK] No incompatibilities found" -ForegroundColor Green
}
Write-Host ""
}
Write-Host "========================================" -ForegroundColor Red
Write-Host "TOTAL ISSUES FOUND: $TotalIssues" -ForegroundColor Red
Write-Host "========================================" -ForegroundColor Red
if ($TotalIssues -gt 0) {
Write-Host ""
Write-Host "ACTION REQUIRED: Fix all incompatibilities before deployment" -ForegroundColor Red
}