Seite 2 von 2
Re: Dateiname und -Pfad per Regex prüfen
Verfasst: 13.08.2022 12:22
von bin_neu_hier
@ Nino
Sorry, Du hast recht - gelobe Besserung
@ Jacdelad
Das sieht echt gut aus! Vielen Dank!
Re: gelöst: Dateiname und -Pfad per Regex prüfen
Verfasst: 14.08.2022 01:40
von jacdelad
Du könntest noch prüfen, ob ein Punkt am Ende ist. Das ist bei meinem Vorschlag noch erlaubt, könnte auch einfach verboten werden
Re: gelöst: Dateiname und -Pfad per Regex prüfen
Verfasst: 10.05.2023 16:40
von jacdelad
Ich hab nochmal mit RegEx weiterexperimentiert und das ist dabei rausgekommen:
Code: Alles auswählen
CreateRegularExpression(0,"^(\\\\|[a-zA-Z]\:\\)([^\\\\\/\?\*\:\|<>]+\\)*([^\\\\\/\?\*\:\|<>\r\n\t\f\v]+)+$")
Define NewList Dir.s()
AddElement(Dir())
Dir()="O:\"
Repeat
dir$=Dir()
If ExamineDirectory(0,Dir(),"*.*")
While NextDirectoryEntry(0)
name$=DirectoryEntryName(0)
If DirectoryEntryType(0)=#PB_DirectoryEntry_File
If Not MatchRegularExpression(0,dir$+name$)
Debug dir$+name$
count+1
Else
gut+1
EndIf
Else
If ReplaceString(name$,".","")<>""
AddElement(Dir())
Dir()=dir$+name$+"\"
EndIf
EndIf
Wend
FinishDirectory(0)
EndIf
FirstElement(Dir())
DeleteElement(Dir(),#True)
Until ListSize(Dir())=0
Debug "Gut: "+Str(gut)
Debug "schlecht: "+Str(count)
Es scheint soweit zu funktionieren (für Windows), aber der Punkt am Ende des Dateinamens wird immer noch nicht angemeckert. Vielleicht hat jemand ne Idee.
Re: gelöst: Dateiname und -Pfad per Regex prüfen
Verfasst: 10.05.2023 17:43
von NicTheQuick
Wenn auch sehr ungewöhnlich, müsste man auch noch prüfen, ob ein Short-Name drin ist. Siehe
https://learn.microsoft.com/en-us/windo ... long-names
Und im Bereich
Naming Conventions findet man auch noch die Liste an Dateinamen, die man nicht benutzen darf: CON, PRN, AUX, NUL, COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.
Und das gilt auch für die Dateinamen, wenn Erweiterungen dran hängen.
Aber ich weiß nicht genau wie weit du damit gehen willst. Es gibt auch maximale Pfadlängen und sowas.
Re: gelöst: Dateiname und -Pfad per Regex prüfen
Verfasst: 10.05.2023 18:30
von jacdelad
NicTheQuick hat geschrieben: 10.05.2023 17:43
Wenn auch sehr ungewöhnlich, müsste man auch noch prüfen, ob ein Short-Name drin ist. Siehe
https://learn.microsoft.com/en-us/windo ... long-names
Und im Bereich
Naming Conventions findet man auch noch die Liste an Dateinamen, die man nicht benutzen darf: CON, PRN, AUX, NUL, COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.
Und das gilt auch für die Dateinamen, wenn Erweiterungen dran hängen.
Aber ich weiß nicht genau wie weit du damit gehen willst. Es gibt auch maximale Pfadlängen und sowas.
Ja, stimmt. Das hatte ich vor und dann vergessen...
Re: gelöst: Dateiname und -Pfad per Regex prüfen
Verfasst: 31.01.2024 21:47
von jacdelad
Irgendwie hat's mir jetzt doch keine Ruhe gelassen:
^(?i-)(\\|[a-z]\:)\\([^\\\/\|\:\"\<\>\?\*]*[^\ \.\\\/\|\:\"\<\>\?\*]\\)*[^\\\/\|\:\"\<\>\?\*]*[^\ \.\\\/\|\:\"\<\>\?\*]$
beachtet, dass keine unerlaubten Zeichen drin sind, Namen müssen mindestens ein Zeichen lang sein und dürfen nicht auf Leerzeichen oder Punkt enden. Es funktionieren Laufwerksbuchstaben und Netzwerkpfade. Jetzt fehlen wirklich nur noch die reservierten Namen (NUL, COM1...), die auch nicht in Verbindung mit anderen Dateiendungen und so verwendet werden dürfen. Das hab ich aber noch nicht hingekriegt.