[powershell] Test auf zu lange Pfade
Gepostet am: Jan 23, 2015 7:43:25 PM
Es ist bei Dateioperationen sehr lästig, Fehlermeldungen zu bekommen, die darauf hinweisen, dass ein Pfad zu lang ist. Daher bin ich dazu übergegangen, die Verzeichnisse vor deren Bearbeitung auf zu lange Pfade zu prüfen.
Textfeld
function TestTooLongPath([string]$StartDir,[bool]$retunfolder = $false) { [bool]$myretval = $false [int]$counterErrors = 0Get-ChildItem -Path $StartDir -Recurse -ErrorAction SilentlyContinue -ErrorVariable err | Out-Nullforeach ($errorRecord in $err) { if ($errorRecord.Exception -is [System.IO.PathTooLongException]) { if ($retunfolder -eq $true) {Write-Warning "Path too long in directory '$($errorRecord.TargetObject)'."} $myretval = $true $counterErrors = $counterErrors + 1 } else { Write-Error -ErrorRecord $errorRecord } if ($retunfolder -eq $true) {Write-Host "Too Long Path Count: $counterErrors"} } return,$myretval }
Verwendung:
ohne Ausgabe der betroffenen Ordner:
if ((TestTooLongPath -StartDir "<PATH>") -eq $false) { Get-ChildItem -Path "<PATH>" -Recurse} else { Write-Host "Folder has too long Path" }
mit Ausgabe der betroffenen Ordner und der Anzahl der Fehler
if ((TestTooLongPath -StartDir "<PATH>" -retunfolder $true) -eq $false) { Get-ChildItem -Path "<PATH>" -Recurse} else { Write-Host "Folder has too long Path" }