@ Nino
Sorry, Du hast recht - gelobe Besserung
@ Jacdelad
Das sieht echt gut aus! Vielen Dank!
gelöst: Dateiname und -Pfad per Regex prüfen
-
- Beiträge: 105
- Registriert: 06.03.2019 21:52
Re: Dateiname und -Pfad per Regex prüfen
Bin mit 21 erstmals mit Computern in Kontakt gekommen und konnte mich daher in meiner Jugend ganz auf den Alkohol konzentrieren. Bin nun seit fast 40 Jahren programmiertechnisch konstant auf Anfänger-Level, konnte jedoch beim Thema Alkohol eine gewisse Virtuosität erreichen.
Irgendwas muss man ja gut können.
Irgendwas muss man ja gut können.
Re: gelöst: Dateiname und -Pfad per Regex prüfen
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
Guten Morgen, das ist ein schöner Tnetennba!
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Re: gelöst: Dateiname und -Pfad per Regex prüfen
Ich hab nochmal mit RegEx weiterexperimentiert und das ist dabei rausgekommen:
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.
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)
Guten Morgen, das ist ein schöner Tnetennba!
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: gelöst: Dateiname und -Pfad per Regex prüfen
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.
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
Ja, stimmt. Das hatte ich vor und dann vergessen...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.
Guten Morgen, das ist ein schöner Tnetennba!
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
Re: gelöst: Dateiname und -Pfad per Regex prüfen
Irgendwie hat's mir jetzt doch keine Ruhe gelassen:
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.^(?i-)(\\|[a-z]\:)\\([^\\\/\|\:\"\<\>\?\*]*[^\ \.\\\/\|\:\"\<\>\?\*]\\)*[^\\\/\|\:\"\<\>\?\*]*[^\ \.\\\/\|\:\"\<\>\?\*]$
Guten Morgen, das ist ein schöner Tnetennba!
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD
PureBasic 6.21/Windows 11 x64/Ryzen 7900X/32GB RAM/3 TB SSD
Synology DS1821+/DX517, 130.9TB+50.8TB+2TB SSD