Verzeichniss auslesen und Namen untersuchen
Hi,
ich versuche gerade ein Skript zu schreiben das mir ein Verzeichniss auslesen soll und die Daten nach einer bestimmten Namenskonvention untersucht.
Die ersten Teile der Namenskonvention habe ich soweit gelöst.
Die Namenskonvention:
- Dateiname+Verzeichniss muss kleiner als 210 Zeichen sein.
soweit erledigt dank eines Beitrages von Biber.
- Es Dürfen nur Folgende Zeichen verwendet werden [A-Za-z0-9] und das minus
da habe ich Probleme ich habe es bis jetzt mit einer negativ Abfrage gemacht, also Alle Zeilen, die Leerzeichen usw. enthalten in eine Log-Datei geschrieben.
Aber dies ist mir zu unübersichtlich.
Leider bin ich bei regex nicht so Fit das ich wüsste wie man es beschreiben kann, meine Erste Idee war [^A-Za-z0-9-] aber da gibt findstr nicht das erwartete Ergebniss aus.
Wie kann ich die Abfrage gestalten das ich die Dateinamen mit Pfadangabe auf diese Konvention hin untersuchen kann.
Gruß
Sascha
ich versuche gerade ein Skript zu schreiben das mir ein Verzeichniss auslesen soll und die Daten nach einer bestimmten Namenskonvention untersucht.
Die ersten Teile der Namenskonvention habe ich soweit gelöst.
Die Namenskonvention:
- Dateiname+Verzeichniss muss kleiner als 210 Zeichen sein.
soweit erledigt dank eines Beitrages von Biber.
- Es Dürfen nur Folgende Zeichen verwendet werden [A-Za-z0-9] und das minus
da habe ich Probleme ich habe es bis jetzt mit einer negativ Abfrage gemacht, also Alle Zeilen, die Leerzeichen usw. enthalten in eine Log-Datei geschrieben.
Aber dies ist mir zu unübersichtlich.
Leider bin ich bei regex nicht so Fit das ich wüsste wie man es beschreiben kann, meine Erste Idee war [^A-Za-z0-9-] aber da gibt findstr nicht das erwartete Ergebniss aus.
Wie kann ich die Abfrage gestalten das ich die Dateinamen mit Pfadangabe auf diese Konvention hin untersuchen kann.
Gruß
Sascha
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 147238
Url: https://administrator.de/contentid/147238
Ausgedruckt am: 25.11.2024 um 07:11 Uhr
5 Kommentare
Neuester Kommentar
moin,
schreib doch einfach, dass - was du hast hier zwischen <code> </code> Blöcke....
Macht es irgendwie für uns "leichter" und folgende - die irgendwann mal hier aufschlagen "interessanter".
Gruß
schreib doch einfach, dass - was du hast hier zwischen <code> </code> Blöcke....
Macht es irgendwie für uns "leichter" und folgende - die irgendwann mal hier aufschlagen "interessanter".
Gruß
Zitat von @Araziel:
Leider bin ich bei regex nicht so Fit das ich wüsste wie man es beschreiben kann, meine Erste Idee war [^A-Za-z0-9-] aber da
gibt findstr nicht das erwartete Ergebniss aus.
Die RegEx-Fähigkeiten vonFindstr sind eher rudimentär.Leider bin ich bei regex nicht so Fit das ich wüsste wie man es beschreiben kann, meine Erste Idee war [^A-Za-z0-9-] aber da
gibt findstr nicht das erwartete Ergebniss aus.
Du kannst auf vbscript ausweichen oder einen Win32-Port von Gnu Grep nehmen
dir /B |grep "[^A-Za-z0-9.-]"
funktioniert hier (für den ganzen Dateinamen mit Pfad musst du auch noch Doppelpunkt, Punkt und das Backslash zulassen)
Wie kann ich die Abfrage gestalten das ich die Dateinamen mit Pfadangabe auf diese Konvention hin untersuchen kann.
Ohne deinen vorhandenen Code zu sehen ist es schwer dir zu helfen wie Timo schon festgestellt hat.Gruß
LotPings
Hallo Araziel,
habe deinen Code nur überflogen, sorry.
Du kannst eine Datei schreiben (blacklist.txt), die alle Verzeichnisnamen / Dateinamen enthält die deine geforderten Zeichen (einschließlich . ) nicht enthält.
Gegen diese Liste kannst du dann erneut prüfen.
...snipp
...snipp
Grüße
rubberman
habe deinen Code nur überflogen, sorry.
Du kannst eine Datei schreiben (blacklist.txt), die alle Verzeichnisnamen / Dateinamen enthält die deine geforderten Zeichen (einschließlich . ) nicht enthält.
Gegen diese Liste kannst du dann erneut prüfen.
...snipp
del "blacklist.txt" 2>nul
for /f "delims=" %%a in ('dir /b^|findstr "[^A-Za-z0-9-\.]"') do >>"blacklist.txt" echo %%a
for /f "delims=" %%a in ('dir /b^|findstr /v /g:"blacklist.txt"') do (
echo %%a
)
del "blacklist.txt"
Grüße
rubberman