Powershell - Pfade und Dateien vergleichen nicht möglich da Pfad oder Dateiname zu lang
Moin,
ich bin dabei einen File-Server zu replizieren bzw. auf einen neuen zu wechseln. Um zu überprüfen ob beide Orte (alter File-Server, neuer File-Server) gleich sind habe ich schon Einiges (u. a. siehe unten) ausprobiert.
Leider scheitert es an der ersten Hürde. Mehr als 260 Zeichen für Dateien oder 248 Zeichen für Pfade können nicht angezeigt werden. Die Struktur ist einfach sehr groß bzw. tief.
Ich bin für jeden guten Tipp sehr dankbar!
ich bin dabei einen File-Server zu replizieren bzw. auf einen neuen zu wechseln. Um zu überprüfen ob beide Orte (alter File-Server, neuer File-Server) gleich sind habe ich schon Einiges (u. a. siehe unten) ausprobiert.
Leider scheitert es an der ersten Hürde. Mehr als 260 Zeichen für Dateien oder 248 Zeichen für Pfade können nicht angezeigt werden. Die Struktur ist einfach sehr groß bzw. tief.
Get-ChildItem -Path 'F:\unterordner\*' -recurse -force | foreach-object -process { $_.FullName.Remove(0,15) } | Out-File C:\output-file.txt
Ich bin für jeden guten Tipp sehr dankbar!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 322599
Url: https://administrator.de/forum/powershell-pfade-und-dateien-vergleichen-nicht-moeglich-da-pfad-oder-dateiname-zu-lang-322599.html
Ausgedruckt am: 22.12.2024 um 09:12 Uhr
9 Kommentare
Neuester Kommentar
Die Struktur ist einfach sehr groß bzw. tief.
Bug der Powershell schon seit Jahren ... MS ändert nichts dran.Da gibt es nur Workarounds mit dem Auflisten der Dateien mit einem Umweg über robocopy.
(robocopy ''F:\unterordner" "$env:Temp\empty" /E /ZB /L /NS /NC /NJH /NJS /NDL /r:0 /w:0) -replace '^\s+|\s+$','' | select -Skip 1 | %{$_.Substring(15)}
Um zu überprüfen ob beide Orte (alter File-Server, neuer File-Server) gleich sind habe ich schon Einiges (u. a. siehe unten) ausprobiert.
Warum nutzt du dann nicht direkt Robocopy?!Gruß
Zitat von @oliver12:
Zu deinem Befehl habe ich noch eine Frage zum Verständnis. Was bedeutet "$env:Temp\empty"
Das ist ein leerer Dummy-Ordner den es nicht gibt aber für einen Vergleich von Robocopy benötigt wird, denn es wird hier ja nur ein Testlauf (/L) gemacht um an alle Dateinamen zu kommen.Zu deinem Befehl habe ich noch eine Frage zum Verständnis. Was bedeutet "$env:Temp\empty"
sowie '^\s+|\s+$','' | select -Skip 1?
Das entfernt per Regex Leereichen vor und hinter dem Dateinamen in der Ausgabe von Robocopy und überspringt die erste immer leere Zeile.Und kennst du zufällig die Syntax, wenn ich die ersten "9" Zeichen entfernt haben möchte, so wie ob in meinem PS-Befehl?
s.o.Zitat von @oliver12:
Eine Frage wäre da noch. Was bedeutet -replace in diesem Zusammenhang? Überschreibt der Befehl?
Nein. Nochmal ich habe doch geschrieben das der Befehl mit Robocopy nur einen Testlauf macht nur zu dem Zweck um an die Dateipfade zu kommen und diese Ausgabe ist ja ein Array aus Strings bei denen die führenden und nachlaufenden Leerzeichen entfernt werden müssen damit sich cleane Dateinamen ergeben mit denen man arbeiten kann!Eine Frage wäre da noch. Was bedeutet -replace in diesem Zusammenhang? Überschreibt der Befehl?
Dann würde Robocopy direkt in den leeren Ordner synchronisieren!
lass einfach mal folgende Zeile in der Powershell laufen, dann siehst du das die Pfade Wild in der Mitte stehen:
wofür steht -replace? Ich habe hierzu nichts finden können.
Oh man du bist echt schwer von Begriff. Zim dritten mal : -replace ist ein Powershell-Operator der per Regular Expressions die Stdout Ausgabe von Robocopy so clean macht das man den Output vernünftig nutzen kann!!!!!!. Was ist daran so schwer zu verstehen?lass einfach mal folgende Zeile in der Powershell laufen, dann siehst du das die Pfade Wild in der Mitte stehen:
robocopy ''F:\unterordner" "$env:Temp\empty" /E /ZB /L /NS /NC /NJH /NJS /NDL /r:0 /w:0
Naja, wenn man das bereits geschriebene und erläuterte x mal wiederholen muss ist irgendwann Schluss mit Lustig.
Eine simple Suche hätte es dir auch verraten
https://www.safaribooksonline.com/library/view/windows-powershell-cookbo ...
Eine simple Suche hätte es dir auch verraten
https://www.safaribooksonline.com/library/view/windows-powershell-cookbo ...