[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" }