hushpuppies
Goto Top

Zu lange Pfade und Dateien ausgeben

Hallo beisammen,

ich kämpfe gerade mit einem kleinen Problem.
In einer unserer Außenstellen gibt es eine "gewachsene" Verzeichnisstruktur, die stellenweise sehr tief verschachtelt ist und auch ungewöhnlich lange Ordner-Namen beinhaltet.
Beim Wiederstellen einer Datei aus einer Sicherung habe ich festgestellt, dass dabei offenbar an manchen Stellen die 255-Zeichen Grenze überschritten wird und man daher ziemliche Probleme mit dem Zugriff auf diese Datei hat.

Ich bräuchte nun ein Script, welches rekursiv durch das Laufwerk wandert und mir den Pfad und die maximale Zeichenlänge des tiefsten Pfades z.B. in eine CSV ausgibt, damit ich die möglichen Problem-Ordner aussortieren und ggf. umbenennen kann.

Also quasi bei

Z:\blaqlbla\blalalfblal\blalblbala\hamptidampti\doofes_pdf.pdf eben den kompletten Pfad und die Zeichenlänge (also 49 in dem Fall)

Geht sowas überhaupt?
Hat sowas vielleicht einer schon mal gebraucht ? face-smile

Content-ID: 205623

Url: https://administrator.de/contentid/205623

Ausgedruckt am: 13.11.2024 um 07:11 Uhr

Endoro
Endoro 25.04.2013 aktualisiert um 17:05:55 Uhr
Goto Top
Hallo hushpuppies,

dieses Skript ist nicht das schnellste, wirft aber alle Pfadlängen vollständig aus. Ich hab's allerdings nicht an überlangen Pfaden getestet, das packt die Forschleife vielleicht nicht mehr.
@echo off&setlocal 
for /r %%i in (*) do (
	for /f "delims=:" %%i in ('^(echo("%%~i"^&echo(^)^|findstr /o $') do set /a len=%%i-5  
	setlocal enabledelayedexpansion
	echo !len! %%~i
	endlocal
)

Vielleicht hat ja jemand noch eine schnellere Lösung.

Gruss!


€dit: etwas mehr speed mit delayed expansion.
hushpuppies
hushpuppies 25.04.2013 um 18:25:37 Uhr
Goto Top
Vielen Dank!
Das ist schon sehr gut!
Sehr elegant und präzise face-smile


Ich habe nachdem ich den Beitrag gepostet hatte, über "ähnliche Inhalte" auch noch einen Beitrag gefunden, der mir vorher bei der Suche durch die Lappen gegangen ist.

Da wird das ganze per Batch gelöst:
Workshop Batch for Runaways - Part I - Beispiel FindLongPath.Bat Bedenklich lange Pfade finden

Nachteil bei dem Batch ist, dass Umlaute nicht erkannt werden und daher nicht mitgezählt werden.