Complete project organization: move all DOS files to projects/dataforth-dos, create client folders, update Claude config
This commit is contained in:
125
projects/dataforth-dos/deployment-scripts/fix-ad2-dos-files.ps1
Normal file
125
projects/dataforth-dos/deployment-scripts/fix-ad2-dos-files.ps1
Normal file
@@ -0,0 +1,125 @@
|
||||
# Fix DOS line endings on AD2 for Dataforth DOS system
|
||||
Write-Host "=== Fixing DOS Files on AD2 (C:\Shares\test\) ===" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
# Setup admin credentials for AD2
|
||||
$password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
||||
$cred = New-Object System.Management.Automation.PSCredential("INTRANET\sysadmin", $password)
|
||||
|
||||
Write-Host "Connecting to AD2..." -ForegroundColor Yellow
|
||||
Write-Host ""
|
||||
|
||||
try {
|
||||
$result = Invoke-Command -ComputerName 192.168.0.6 -Credential $cred -ScriptBlock {
|
||||
Write-Host "[INFO] Searching for .BAT files in C:\Shares\test\" -ForegroundColor Yellow
|
||||
Write-Host ""
|
||||
|
||||
# Find all .BAT files in the test directory
|
||||
$batFiles = Get-ChildItem -Path "C:\Shares\test" -Filter "*.BAT" -Recurse -ErrorAction SilentlyContinue
|
||||
|
||||
Write-Host "Found $($batFiles.Count) batch files" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
$needsConversion = @()
|
||||
$results = @()
|
||||
|
||||
foreach ($file in $batFiles) {
|
||||
try {
|
||||
$bytes = [System.IO.File]::ReadAllBytes($file.FullName)
|
||||
$hasCRLF = $false
|
||||
$hasLF = $false
|
||||
|
||||
for ($i = 0; $i -lt $bytes.Length - 1; $i++) {
|
||||
if ($bytes[$i] -eq 13 -and $bytes[$i+1] -eq 10) {
|
||||
$hasCRLF = $true
|
||||
break
|
||||
}
|
||||
if ($bytes[$i] -eq 10 -and ($i -eq 0 -or $bytes[$i-1] -ne 13)) {
|
||||
$hasLF = $true
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
$relativePath = $file.FullName.Replace("C:\Shares\test\", "")
|
||||
|
||||
if ($hasCRLF) {
|
||||
$status = "OK"
|
||||
$format = "CRLF (DOS)"
|
||||
} elseif ($hasLF) {
|
||||
$status = "NEEDS CONVERSION"
|
||||
$format = "LF (Unix)"
|
||||
$needsConversion += $file
|
||||
} else {
|
||||
$status = "EMPTY/SINGLE LINE"
|
||||
$format = "No line endings"
|
||||
}
|
||||
|
||||
$results += [PSCustomObject]@{
|
||||
File = $relativePath
|
||||
Status = $status
|
||||
Format = $format
|
||||
}
|
||||
|
||||
Write-Host "[$status] $relativePath" -ForegroundColor $(if ($status -eq "OK") { "Green" } elseif ($status -eq "NEEDS CONVERSION") { "Red" } else { "Yellow" })
|
||||
Write-Host " $format" -ForegroundColor Gray
|
||||
Write-Host ""
|
||||
} catch {
|
||||
Write-Host "[ERROR] $($file.Name): $($_.Exception.Message)" -ForegroundColor Red
|
||||
}
|
||||
}
|
||||
|
||||
# Convert files that need it
|
||||
if ($needsConversion.Count -gt 0) {
|
||||
Write-Host "=== Converting $($needsConversion.Count) files to DOS format ===" -ForegroundColor Yellow
|
||||
Write-Host ""
|
||||
|
||||
$converted = 0
|
||||
$errors = 0
|
||||
|
||||
foreach ($file in $needsConversion) {
|
||||
try {
|
||||
# Read content
|
||||
$content = Get-Content $file.FullName -Raw
|
||||
|
||||
# Convert to DOS format (CRLF)
|
||||
$dosContent = $content -replace "`r?`n", "`r`n"
|
||||
|
||||
# Write back as ASCII (DOS compatible)
|
||||
[System.IO.File]::WriteAllText($file.FullName, $dosContent, [System.Text.Encoding]::ASCII)
|
||||
|
||||
Write-Host "[OK] $($file.Name)" -ForegroundColor Green
|
||||
$converted++
|
||||
} catch {
|
||||
Write-Host "[ERROR] $($file.Name): $($_.Exception.Message)" -ForegroundColor Red
|
||||
$errors++
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "=== Conversion Complete ===" -ForegroundColor Green
|
||||
Write-Host "Converted: $converted files" -ForegroundColor Green
|
||||
if ($errors -gt 0) {
|
||||
Write-Host "Errors: $errors files" -ForegroundColor Red
|
||||
}
|
||||
} else {
|
||||
Write-Host "=== All Files OK ===" -ForegroundColor Green
|
||||
Write-Host "All batch files already have proper DOS (CRLF) line endings." -ForegroundColor Green
|
||||
}
|
||||
|
||||
# Return summary
|
||||
return @{
|
||||
TotalFiles = $batFiles.Count
|
||||
Converted = $needsConversion.Count
|
||||
Results = $results
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "=== Summary ===" -ForegroundColor Cyan
|
||||
Write-Host "Total batch files found: $($result.TotalFiles)" -ForegroundColor White
|
||||
Write-Host "Files converted: $($result.Converted)" -ForegroundColor $(if ($result.Converted -gt 0) { "Yellow" } else { "Green" })
|
||||
|
||||
} catch {
|
||||
Write-Host "[ERROR] Failed to connect to AD2" -ForegroundColor Red
|
||||
Write-Host $_.Exception.Message -ForegroundColor Red
|
||||
}
|
||||
Reference in New Issue
Block a user