h41msh1c0r
Goto Top

Bergeweise DIRs durchforsten und Dateinamen auswerten, nur wie anfangen

Hi@Batchprofi's

Ich habe Bergeweise Dokumente über die ich eine Auswertung machen soll. Da es täglich mehr werden und es eine sehr verschachtelte Verzeichnisstruktur ist macht das händisch 0 Sinn, es sei denn man will einen Job4Ever .

Dokument_2(273000)_______FB__Seite_1(273001).tif

Von Interesse ist rein in dem Fall FB und die Seite 1.

FB steht für Fragebogen von diesen Dokumentenklassen gibt es ca 75 Stück
und es können auch mehrere Seiten in den ordnern sein.

Für die Zählung ist aber nur Seite 1 von Interesse, weil man so gut die Anzahl zählen kann, alle anderen Seiten mit der gleichen Kennung kann man getrost ignorieren, da man Seite 1 ja bereits gezählt hat.

Wie fängt man nun an:

Ich würde als Suchstring "Seite_1" hernehmen.

Fürs Rekursive gibt es bei for ja den Schalter /r.

Aber da verließen sie mich auch schon. *grübel*

Grüße

EDIT: Grad das Tutorial zu FOR gefunden und geh das grad durch. Wenn ich einen Ansatz habe und fragen habe(werden bestimmt kommen) poste ich hier. Wenn trotzdem einer so eine Idee hat ich bin immer aufgeschlossen. =)

Content-Key: 157383

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

Printed on: April 23, 2024 at 10:04 o'clock

Member: bastla
bastla Dec 21, 2010 at 17:04:09 (UTC)
Goto Top
Hallo H41mSh1C0R!

Da die Beschreibung der gewünschten Auswertung noch relativ nebulos ist, nur einmal ein grundsätzlicher Ansatz für das vorgegebene Dateimuster:
@echo off & setlocal
set "Basis=D:\Ausgangsordner\"  
set "Maske=*Seite_1(*.tif"  

for /f "delims=" %%i in ('dir /s /b "%Basis%%Maske%" 2^>nul') do call :ProcessFile "%%i"  
goto :eof

:ProcessFile
set  "Klasse="  
for /f "tokens=4 delims=()_" %%a in ("%~n1") do set "Klasse=%%a"  
set "Klasse=%Klasse:~,-5%"  
if defined Klasse (
    echo Gefunden: %Klasse% in %1
    REM Verarbeitung hier vornehmen
)
goto :eof
Zu beachten: Die Angabe des Basisordners (Zeile2) muss mit abschließendem "\" erfolgen.

Grüße
bastla

[Edit] Variable %Teil% auf %Klasse% geändert /Edit]
Member: Biber
Biber Dec 21, 2010 at 17:10:18 (UTC)
Goto Top
Moin H41mSh1C0R,

es kommt darauf an, was so deine Vorstellungen von einer "Auswertung" sind.

Für schnelle Ad-hoc-Fragen ("Wieviel Fragebögen hab ich denn insgesamt?") würde ich nicht viel Aufwand treiben.

Beispiel: Wenn es nur darum geht, alle Dateien ab einem bestimmten Rootverzeichnis an durchzupflügen und die Gesamtzahl zu ermitteln,
>dir /s "f:\k\*Seite1(*.*"|findstr "Datei(en)"  
              18 Datei(en)     35.241.118 Bytes
               4 Datei(en)     22.357.372 Bytes
               5 Datei(en)      2.739.712 Bytes
              27 Datei(en)     60.338.202 Bytes
## und da meinetwegen noch irgendeinen Deppen die Anzahl zusammenzählen lassen...
>set "anzahl="&@(for /f %i in ('dir /s "f:\k\*Seite(*.*"^|findstr "Datei(en)"') do @set /a "anzahl+=%i">nul) & @set anzahl  
anzahl=54

Grüße
Biber
Member: H41mSh1C0R
H41mSh1C0R Dec 21, 2010 at 17:53:03 (UTC)
Goto Top
Hi ihr beiden,

hab vorhin den Bestand mal durchgesehen, sind ca 25000 Dateien, Tendenz steigend.

Und die Verzeichnisstruktur hat 3 Ebenen.

75 Dokumentenklassen

Anhand der "Seite_1" klappt schonmal das "durchzählen" dann sortier(kopier) ich die ermittelten Klassen in unterordner weil die durchgesehen werden sollen, wieso auch immer. Wenn ich an der Stelle erstmal angekommen bin will ich noch die Zeitfenster ermitteln von wann bis wann die einzelnen Dokumente angelegt wurden.

Aber jetzt geht der von illness geplagte H41mSh1C0r in die waagerechte.

Bis morgen und schonmal danke für eure Antworten.

VG
Member: pieh-ejdsch
pieh-ejdsch Dec 22, 2010 at 19:11:07 (UTC)
Goto Top
moin,

06.## und da meinetwegen noch irgendeinen Deppen die Anzahl zusammenzählen lassen...

@Biber
die Ausgabe der Zussammenrechnung ist falsch.
der Befehl Dir /s kann sogar selbst mitzählen und gibt Dir doch die gesamt Anzahl am Ende auch aus.
27 ist ja schon die Fertige Rechnung NICHT 54 das wäre das doppelte

>(for /f %i in ('dir /s "f:\k\*Seite(*.*"^|findstr "Datei(en)"') do @set "anzahl=%i">nul) & @set anzahl
anzahl=27

Gruß Phil
Member: Biber
Biber Dec 22, 2010 at 20:13:37 (UTC)
Goto Top
Moin pieh-ejdsch,

*lach*... jetzt wo du es sagst...

Du hast vollkommen recht.

Hätte mir auch auffallen können.

Vielen Dank & Gruß
Biber