126 lines
4.7 KiB
PowerShell
126 lines
4.7 KiB
PowerShell
# 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
|
|
}
|