chrisii
Goto Top

Windows Verzeichnispfad mit Dateiname auf Anzahl Zeichen prüfen

Check Programm gesucht

Hallo

Kennt jemand ein gutes Tool, um Verzeichnispfade und Dateinamen in einem bestimmten Laufwerk auf Anzahl Zeichen zu prüfen?

Ich habe das Problem, dass ich in einer FILER-Verzeichnisstruktur die Offline auf meinem Notebook synchronisiert ist, die max. Anzahl Zeichen 256 im Pfad überschreiten kann. Möchte ich anschliessend am Netz mein Notebook wieder synchronisieren, kommt eine Fehlermeldung die in etwa so lautet: "Offline Datei konnte nicht synchronisiert werden, falscher Parameter".

Ich müsste etwas habe, dass mich überwacht, wenn ich die max. Anzahl Zeichen überschreite oder ein Tool mit dem ich, wenn der Fehler auftritt, meine Verzeichnisse durchsuchen kann und dieses mir dann die verursachende Datei mit Pfad anzeigt.

Hat jemand einen Geheimtipp? Danke!

Gruss
Chrisii

Content-Key: 78572

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

Printed on: February 21, 2024 at 06:02 o'clock

Member: bastla
bastla Jan 19, 2008, updated at Oct 18, 2012 at 16:35:19 (UTC)
Goto Top
Hallo Chrisii!

Zumindest des Findens langer Pfade hat sich Batch for Runaways - Part 1 - Beispiel: FindLongPath.Bat Bedenklich lange Pfade finden) schon einmal angenommen.

Als Alternative dazu könnte ich folgendes VBScript anbieten:
' ListLongPaths.vbs  

Const sSTARTPATH = "D:\"  
Const iLONG = 250
Const LOGFILEPATH = "D:\" 'Speicherort der Logdatei, falls nicht auf dem Desktop gespeichert werden soll  

Set WShell = WScript.CreateObject("WScript.Shell")  
sLogFilePath = WShell.SpecialFolders("Desktop")  
'############  
'sLogFilePath = LOGFILEPATH 'Um den oben festgelegten Speicherort zu verwenden, das Kommentarzeichen am Anfang der Zeile entfernen  
'############  
If Right(sLogFilePath, 1) <> "\" Then sLogFilePath = sLogFilePath & "\"  
sLogFile = sLogFilePath & "LongPaths.txt"  

Set fso = CreateObject("Scripting.FilesystemObject")  

If WScript.Arguments.Count > 0 Then
	sStart = WScript.Arguments(0)
Else
	sStart = sSTARTPATH
End If
	
If Not fso.FolderExists(sStart) Then
	WScript.Echo "Ordner " & sStart & " nicht gefunden!"  
	WScript.Quit
End If

bFound = False
Set oLog = fso.OpenTextFile(sLogFile, 2, True)
DoFolders fso.GetFolder(sStart)
oLog.Close

If bFound Then
	R = MsgBox("Es wurde mindestens ein Pfad mit einer Länge > " & _  
		iLONG & " gefunden und in" & vbCrLF & _  
		"""" & sLogFile & """ gespeichert." & vbCrLF & vbCrLF & _  
		"Soll die Logdatei jetzt geöffnet werden?", vbYesNo)  
	If R = vbYes Then WShell.Run "notepad " & sLogFile  
Else
	MsgBox "Es wurden keine Pfade mit einer Länge > " & iLONG & " gefunden."  
End If

Sub DoFolders(Folder)
For Each SubFolder In Folder.SubFolders
    DoFolders SubFolder
    If Len(SubFolder.Path) > iLONG Then List(SubFolder.Path & "\")  
    For Each File In SubFolder.Files
	If Len(File.Path) > iLONG Then List(File.Path)
    Next
Next
End Sub

Sub List(sPath)
oLog.WriteLine Right("   " & CStr(Len(sPath)), 3) & " " & sPath  
bFound = True
End Sub
Das Script muss in einer Datei mit dem Typ ".vbs", (zB "ListLongPaths.vbs") gespeichert werden - falls dazu der Windows-Editor verwendet wird, bitte den Dateinamen beim Speichern unter Anführungszeichen setzen, da ansonsten als "ListLongPaths.vbs.txt" gespeichert wird.

Gestartet werden kann per Doppelklick oder per Drag & Drop des zu untersuchenden Laufwerkes / Ordners. In ersterem Fall wird der festgelegte Default-Startpfad verwendet.

Es wird eine Logdatei auf dem Desktop (bzw auf Wunsch in einem anderen Ordner - siehe dazu Kommentar im Script) erstellt, wobei das Vorhandensein von Schreibrechten im Zielordner vorausgesetzt (und nicht überprüft) wird.

Grüße
bastla