Dateien Nummern auf Lückenlosigkeit prüfen in Verzeichnis mit Unterverzeichnissen

chgs2011
Goto Top
Hallo zusammen,

ich beziehe mich auf ein damals angesprochenes Thema:
https://administrator.de/content/detail.php?id=127872


Vielen Dank für den Ansatz bastla, immer wieder cool was du für Lösungen zauberst.

Wir haben aktuell auch so ein Thema und haben nach einer Lösung von dir gesucht (kommen ja fast alle von dir).

Unsere PDFs liegen in einen Stammverzeichnis auf B:\ mit vielen Unterverzeichnissen je Jahr und Monat und wollen hier prüfen, ob Nummern im Kreis fehlen.

Der Start/Endwert ergibt sich im Grunde aus den Dateien selbst, sprich wenn jemand ein Dokument ablegt, bekam es die Nummer X und am Monatsende haben wir Nummer Y.

Start/Endwert wäre uns aber eigentlich egal und brauchen wir wohl nicht, Hauptsache wir finden evtl. fehlende Nummern.

Schema der Dateibezeichnungen als Beispiel:
"Anleitung D272150.pdf"


Verzeichnisstruktur:
Laufwerk\Jahr\Monat\Kategorie

B:\
B:\2021
B:\2021\01
B:\2021\01\A
B:\2021\01\B
B:\2021\02
B:\2021\02\A
B:\2021\02\B
B:\2021\03
B:\2021\03\A
B:\2021\03\B
...


Wir wollen also prüfen, ob es in allen dieser Verzeichnisse eine fehlende Nummer gibt.

Vielen Dank.

Content-Key: 2108369798

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

Ausgedruckt am: 03.07.2022 um 09:07 Uhr

Mitglied: TK1987
TK1987 10.03.2022 aktualisiert um 15:03:51 Uhr
Goto Top
Moin,

ohne Anfangs- und Endwert ist das mit Batch kaum realisierbar, da es mit Batch ziemlich Aufwendig ist, aus allen Dateinamen die Nummern herauszufiltern, anschließend Minimum- und Maximumwerte festzulegen und dann noch fehlende zu filtern.

Alleine schon aus Performancegründen wäre hier aber ohnehin Powershell zu empfehlen - damit ist das Ganze auch ohne Start- und Endwert ein klacks.

Powershell Leitfaden für Anfänger

Gruß Thomas
Mitglied: chgs2011
chgs2011 11.03.2022 um 08:00:31 Uhr
Goto Top
Hallo Thomas,

ich wäre auch für PS offen, habe damit aber null Erfahrung, man weis nur dass man mit viel weniger Coding oft auskommt und es performanter ist.

Habe dein Test mal versucht, er wirft mir aber einen INT32 Fehler:
Der Wert "009510089801" kann nicht in den Typ "System.Int32" konvertiert werden.
Fehler: "Der Wert für einen Int32 war zu groß oder zu klein."

Mitglied: TK1987
TK1987 11.03.2022 um 08:20:43 Uhr
Goto Top
Zitat von @chgs2011:
Habe dein Test mal versucht, er wirft mir aber einen INT32 Fehler:
Der Wert "009510089801" kann nicht in den Typ "System.Int32" konvertiert werden.
Fehler: "Der Wert für einen Int32 war zu groß oder zu klein."

Ok, in deinem Beispiel war die Nummer deutlich kleiner. Wenn die Nummern auch so groß sein können, nehmen wir stattdessen halt long.
Mitglied: chgs2011
chgs2011 14.03.2022 um 09:54:23 Uhr
Goto Top
Vielen Dank für das Update Thomas, habe es mal auf einen Unterordner begrenzt, um zu testen ob sich überhaupt etwas tut.

Das Script "*.ps1" läuft an und schließt dann nach paar Sekunden wieder, ohne jegliche Rückmeldung / Log etc.

Ich wüsste also nicht was nun gemacht wurde, hatte ein PDF mal verschoben, wurde nicht gefunden.

Beispiel:
"Anleitung A278834.pdf"
Mitglied: TK1987
TK1987 14.03.2022 um 11:53:09 Uhr
Goto Top
Zitat von @chgs2011:
Das Script "*.ps1" läuft an und schließt dann nach paar Sekunden wieder, ohne jegliche Rückmeldung / Log etc.
Erstmal geben die Befehle nur die fehlenden Nummern auf der Konsole aus. Was genau mit den Nummern passieren soll, hast du ja bislang nicht näher spezifiziert.

Um den größtmöglichen Lerneffekt zu erziehlen, empfiehlt es sich für Anfänger immer, die einzelnen Befehle erstmal in der Konsole zu testen.
So kannst du dir erstmal angucken: Welcher Befehl erzeugt welche Ausgabe, wie sehen hinterher meine Variablen aus, usw.

Wenn du das Ganze hinterher als Skript laufen lässt, hast du eben verschiedenste Optionen.

back-to-topDu könntest...
  • das Skript mit Parameter -NoExit starten, damit das Fenster am Ende offen bleibt
  • (wie bei cmd auch) "pause" ans Ende des Skript hinzufügen, damit dieses offen bleibt, bis man die Eingabetaste drückt
  • die Ausgabe in eine Datei schreiben lassen
  • mit der Ausgabe weitere Aktionen durchführen

Um die Ausgabe z. B. in eine Log mitschreiben zu lassen

Bitte beachte auch den

Gruß Thomas
Mitglied: chgs2011
chgs2011 17.03.2022 um 18:00:01 Uhr
Goto Top
Vielen Dank Thomas, ich habe meinen Fehler gefunden!

Es waren leider noch weitere Dokumente mit drin, die natürlich mit betrachtet wurden.

Ich habe daher Zeile 4+5 angepasst und eingegrenzt: