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.charactersif ($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
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
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
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