Powershell: List overlong file paths

Overlong file paths can become a problem during migrations and backup/restore processes. A file path must not normally be longer than 260 characters. However, it can happen that this limit is exceeded. This small Powershell script can be used to identify such long paths:

#Directory or volume to be checked:
$ directory = "D:\Shares"

#Ppath to the CSV file for export:
$CSV = "d:\export.csv"

#Write warning level for paths longer than XX characters in CSV
$Warninglevel = "250"

#———————————————–
"path;length" | set-content "$CSV"
$dirlist = Get-ChildItem "$Vdirectory" -recurse | foreach {$_.Fullname}
foreach ($dir in $dirlist)
{
$a = $dir | Measure-Object -Character
$length = $a.characters

if ($length -gt $Warninglevel)
{
"$dir;$length" | add-content "$CSV"
}
}
$sort = import-csv "$CSV" -delimiter ";" | Sort-Object -Property Length -Descending
"" | set-content "$CSV"
$sort | export-csv "$CSV" -delimiter ";" -NoTypeInformation

The script searches a directory or a volume and saves the paths that are too long in a CSV file.

Here is some background information: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx

3 thoughts on “Powershell: Überlange Dateipfade auflisten”

  1. Hallo Frank,
    vielen Dank!
    Bei mir funktionierte das Script auf Anhieb.
    Ich werde mich mehr mit der PS beschäftigen.
    *.BAT-Dateien sind bei mir ein wenig aus der Mode gekommen.
    Das war ein Fehler.
    Heute heißt das Rad zwar *.PS1, ist aber immernoch rund.
    Besten Grüße
    MS

    Reply
  2. Hallo Frank,
    ja, das ist schon ein riesen Problem.
    Dein Script macht aber einen Denkfehler.
    Die tatsächliche Länge des Pfades setzt sich aus der Länge des UNC Pfades, also mit Backslashes, Servername,Volumename, zusammen.

    Trotzdem danke,
    Gruß
    Volker

    Reply
  3. Hallo,

    das Script liefert mir „nur“ Dateienamen, die kleiner als 260 Zeichen sind.

    Leider bekomme ich viele Gci Fehlermeldungen das der Pfad zu lang ist. Die Dateien über 260 Zeichen werden also nicht protokolliert -> aber genau darum geht es doch, oder?

    OS: Server2012

    Thx im voraus
    Daniel

    Reply

Leave a Comment