attituder
Goto Top

Bestimme Logfiles kopieren, entpacken via Batch-Datei

Hallo,

mit Hilfe der Suche bin ich leider auf keinen Lösungsansatz gestossen.

EINLEITUNG:

In Einem Firmennetzwerk werden von bestimmten Clients Logfiles angelegt. Diese werden auf den Server unter dem festgelegten Ordner des Clients gespeichert. In diesem Clientordner habe ich 2 Ordner in dem sich die Logfiles in gepackter Form befinden. Einmal den Hauptordner und einen Ablageordner. Im Hauptordner befinden sich die Logfiles der letzten 7 Tage. Logfiles die älter als 7 Tage sind, werden automatisch in den Überordner "Ablage" verschoben. Die Logfiles werden täglich angelegt und besitzen z.B. den Dateinamen "20081013_logfile.txt.zip"


PROBLEM:

Ich suche eine Möglichkeit, so dass ich Logfiles eines bestimmten Zeitraums z.B. von 01.10.-10.10.2008 anhand des Dateinamens in ein bestimmtes Verzeichnis kopieren kann und darauffolgend diese entpackt und die Zip-Dateien löscht, so dass ich nur noch in diesen gesammelten Verzeichnis der Clients die txt-Dateien vorliegen habe um eine Auswertung der Logfiles mehrerer Clients von einem bestimmten Zeitraum vornehmen zu können.


Für jeden Lösungsansatz bin ich sehr Dankbar!

Content-Key: 99104

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

Ausgedruckt am: 29.03.2024 um 10:03 Uhr

Mitglied: bastla
bastla 13.10.2008 um 15:48:43 Uhr
Goto Top
Hallo Attituder!

So ganz klar ist mir die Struktur nicht - einerseits sollen sich "Hauptordner" und "Ablageordner" im "Clientordner" befinden, andererseits bezeichnest Du den "Ablageordner" als Überordner ... (Ich nehme einmal an, dass sich beide Ordner unterhalb des "Clientordners" befinden.)

Soferne das "bestimmte Verzeichnis" (in welches die Logs entpackt werden sollen) das Ziel für alle Logs aus dem angegebenen Zeitraum sein soll, wäre noch zu klären, wie ein Überschreiben der Logs eines vorher behandelten Clients vermieden werden kann. Eine Möglichkeit wäre, den Namen des "Clientordners" an den Dateinamen anzufügen (siehe Batch).

Da Du kein (Ent-)Packprogramm erwähnt hast, verwende ich zum Testen "7za.exe", die Standalone-Commandline-Version von "7-zip" (Download) mit dem Speicherort "C:\Scripts".

Auf Basis der getroffenen Annahmen könnte der Batch dann so aussehen:
@echo off & setlocal
set "Von=20081001"  
set "Bis=20081010"  

set "Postfix=_logfile.txt.zip"  
set "Basis=D:\Logs"  
set "Sammel=D:\SelectedLogs"  

set "UnZIP=C:\Scripts\7za.exe"  

if not exist "%Sammel%" md "%Sammel%"  
del /q "%Sammel%"  
for /d %%v in ("%Basis%\*.*") do (  
    echo Bearbeite Client: %%v
    for /f %%i in ('dir /s /b /a-d "%%v\20??????%Postfix%" 2^>nul') do (  
        echo Pruefe Log: %%~ni
        if "%%~nxi" geq "%Von%%PostFix%" if "%%~nxi" leq "%Bis%%PostFix%" (  
            echo #Entpacke Log: %%~ni
            "%UnZIP%" e -y "%%i" -o"%Sammel%" >nul  
            if exist "%Sammel%\%%~ni" for /f %%a in ("%%~ni") do ren "%Sammel%\%%~ni" %%~na-%%~nxv%%~xa"  
        )
    )
)
Der Sammelordner wird, falls noch nicht vorhanden, erstellt und jeweils beim Start gelöscht.

Grüße
bastla
Mitglied: Attituder
Attituder 13.10.2008 um 17:02:38 Uhr
Goto Top
Danke für Deine schnelle Antwort. Funktioniert soweit wunderbar!

Zu Deiner Frage:

Im Clientordner z.B. PC01 befinden sich die Logfiles der letzten 7 Tage inkl. des Ordners "Ablage".

Leider bin ich noch auf ein kleines Problem gestoßen. Es müsste noch eine Funktion behinhalten, dass er den Wochentag "Sonntag" nicht beachtet. Sozusagen innerhalb dieses festgelegten Zeitraums nur 6 Tage kopiert und entpackt. Falls das noch irgendwie zu lösen ist, bin ich wunschlos glücklich!
Mitglied: Biber
Biber 13.10.2008 um 18:23:40 Uhr
Goto Top
Moin Attituder,

bei diesem Sonntags-Problem würde ich mich gar nicht lange über die Unzulänglichkeiten von M$-Batchen oder die Unfähigkeit der Redmonder PraktikantInnen ärgern, sondern das unaufwändig wie folgt lösen:

  • lege Dir eine Textdatei "Sonntage.txt" mit den Sonntagsdatumswerten im ANSI-Format (yyyymmdd) an (Zeitbedarf dafür 3 Minuten):
.....
20081005
20081012
20081019
20081026
....

  • bastla hat irgendwo eine kryptische IF-Bedingung "[if "%%~nxi" geq "%Von%%PostFix%"....]
  • vor dieses IF-Konstrukt in dieselbe Zeile noch
find "%%~nxi" F:\FesterFad\Sonntage.txt>nul || [IF-bedingung gemäß bastla...]

Statt F:\FesterFad natürlich den Pfad, unter dem Deine Sonntage-Datei liegt.
Gratis-Zusatzfeature: Außer Sonntagen kannst Du dort auch Weihnachten, Vinxten und Merkels Geburtstag eintragen, also alle Tage, an denen nicht gearbeitet wird.

[ Anmerkung: Eventuell ist es einfacher, nur die Tage einzutragen, an denen gearbeitet wird...


P.S. Und falls bastla Dir da lieber eine VBS-Lösung anschnacken will: einfach ignorieren *g

Grüße
Biber
Mitglied: bastla
bastla 13.10.2008 um 20:15:05 Uhr
Goto Top
@Biber
... falls bastla Dir da lieber eine VBS-Lösung anschnacken will ...
Wie kommst Du denn auf derart Abwegiges? face-wink

Grüße
bastla
Mitglied: Biber
Biber 13.10.2008 um 20:25:03 Uhr
Goto Top
@bastla
Wie kommst Du denn auf derart Abwegiges?
Man/frau weiss ja nie, was so im Kopf eines Skripters vorgeht... face-wink

Grüße
Biber
Mitglied: bastla
bastla 13.10.2008 um 22:02:09 Uhr
Goto Top
@Biber
Man/frau weiss ja nie, was so im Kopf eines Skripters vorgeht... face-wink
Ist wohl auch besser so ...

Würdest Du übrigens Batcher unter Skripter subsumieren? face-wink

Grüße
bastla
Mitglied: Attituder
Attituder 14.10.2008 um 08:14:09 Uhr
Goto Top
[ Anmerkung: Eventuell ist es einfacher, nur die Tage einzutragen, an
denen gearbeitet wird...
umändern.]

Aber dazu müsste ich doch alle Arbeitstage in eine extra txt-Datei eintragen, oder?
Mitglied: bastla
bastla 14.10.2008 um 08:18:44 Uhr
Goto Top
Hallo Attituder!

Aber dazu müsste ich doch alle Arbeitstage in eine extra txt-Datei eintragen, oder?
Ja, wenn Ihr soviel arbeitet ... face-wink

Die Variante mit Sonntagen wird dann wohl vorzuziehen sein, wobei Du die Liste zB mit Excel ja ganz schnell hinbekommen kannst.

Grüße
bastla
Mitglied: Biber
Biber 14.10.2008 um 08:34:18 Uhr
Goto Top
Aber dazu müsste ich doch alle Arbeitstage in eine extra txt-Datei eintragen, oder?
Jepp, und die Sinnhaftigkeit ist abhängig davon, ob in den 365 Tagen eines Jahres mehr als die Hälfte Arbeitstage oder Nicht-Arbeitstage sind.

Wenn es nur um 52 Sonntage und 20 Feiertage pro Jahr geht
--> dann sind sind freie Tage mit 72 von 365 eindeutig die Ausnahme (so genannte Arbeitnehmer-Sicht).

[ Aus Arbeitgeber-Sicht würde allerdings sicherlich nahegelegt werden, mal eben nur die paar Arbeitstage einzutragen - die meiste Zeit hast Du ja eh frei.
[365 Tage a 24 Stunden hat das Jahr, davon werden nur 8 Stunden, also ein Drittel gearbeitet.
--> Netto also ca 365/3 = 122 Tage AUFgerundet.
Abzüglich 52 Sonntage --> bleiben 70 Tage
Abzüglich 20 gesetzliche Feiertage --> bleiben 50 Tage.
Abzüglich 30 Tage Urlaub --> bleiben 20 Tage.
Abzüglich 3 Tage frei für Umzug, Beerdigungen, Hochzeit und sonstige Vergnügungen-> bleiben 17 Tage.
Abzüglich 10 Tage für Schulung und Fortbildung. --> bleiben 7 Tage.
Und die 7 Arbeitstage kannst Du doch eben mal in der Mittagspause in so eine Textdatei eintippseln, oder nicht?]

Grüße
Biber
Mitglied: Attituder
Attituder 14.10.2008 um 08:42:20 Uhr
Goto Top
Habe das gerade mit den Sonntage.txt ausprobiert. Nur leider funktioniert das irgendwie nicht face-sad.

Mir ist noch ein zusätzliches Feature eingefallen was sicherlich zu lösen ist. Die Zeitspanne, die ich in der Batch-Datei angeben kann ist es doch sicherlich auch möglich diese Zeitspanne in eine externe-Datei reinzuschreiben, die dann wieder von dieser Batch-Datei ausgelesen wird?
Mitglied: Biber
Biber 14.10.2008 um 09:23:58 Uhr
Goto Top
Zitat von @Attituder:
Habe das gerade mit den Sonntage.txt ausprobiert. Nur leider
funktioniert das irgendwie nicht face-sad.

Hmm, könnte mit diesen Sonnenflecken zusammenhängen...
Oder vielleicht zu feiner Sand...?
Evtl. kann ich genauer raten, wenn ich das jetzige Skript sehe..

Mir ist noch ein zusätzliches Feature eingefallen was sicherlich
zu lösen ist. Die Zeitspanne, die ich in der Batch-Datei angeben
kann ist es doch sicherlich auch möglich diese Zeitspanne in eine
externe-Datei reinzuschreiben, die dann wieder von dieser Batch-Datei
ausgelesen wird?
Dazu die beiden Zeilen
Von=20081001
Bis=20081010
in eine Datei LogFileUnzip.ini schreiben und im Batch mit dieser Zeile einlesen.
For /f  "delims=" %%i in (LogFileunzip.ini) do Set "%%i"

Grüße
Biber
Mitglied: Attituder
Attituder 14.10.2008 um 09:35:46 Uhr
Goto Top
Funktioniert wunderbar, danke!

hier die batch-file:

@echo off & setlocal
For /f  "delims=" %%i in (LogFileunzip.ini) do Set "%%i"  

set "Postfix=_logfile.txt.zip"  
set "Basis=I:\Logfiles"  
set "Sammel=I:\SelectedLogs"  

set "UnZIP=I:\batch\7za.exe"  

if not exist "%Sammel%" md "%Sammel%"  
del /q "%Sammel%"  
for /d %%v in ("%Basis%\*.*") do (  
    echo Bearbeite Client: %%v
    for /f %%i in ('dir /s /b /a-d "%%v\20??????%Postfix%" 2^>nul') do (  
        echo Pruefe Log: %%~ni
        find "%%~nxi" I:\batch\Sonntage.txt>nul || if "%%~nxi" geq "%Von%%PostFix%" if "%%~nxi" leq "%Bis%%PostFix%" (  
            echo #Entpacke Log: %%~ni
            "%UnZIP%" e -y "%%i" -o"%Sammel%" >nul  
            if exist "%Sammel%\%%~ni" for /f %%a in ("%%~ni") do ren "%Sammel%\%%~ni" %%~na-%%~nxv%%~xa"  
        )
    )
)
Mitglied: bastla
bastla 14.10.2008 um 10:24:06 Uhr
Goto Top
Hallo Attituder!

Da in der "Sonntagsliste" nur das Datum, im Dateinamen aber auch noch der Zusatz "_logfile.txt.zip" enthalten ist, muss der Name zunächst noch zerlegt werden:
@echo off & setlocal

set "Ini=I:\Logfiles\LogFileunzip.ini"  
set "Basis=I:\Logfiles"  
set "Sammel=I:\SelectedLogs"  
set "Postfix=_logfile.txt.zip"  

set "UnZIP=I:\batch\7za.exe"  
set "Sonntage=I:\batch\Sonntage.txt"  

For /f "usebackq delims=" %%i in ("%Ini%") do Set "%%i"  
if not exist "%Sammel%" md "%Sammel%"  
del /q "%Sammel%"  
for /d %%v in ("%Basis%\*.*") do (  
    echo Bearbeite Client: %%v
    for /f %%i in ('dir /s /b /a-d "%%v\20??????%Postfix%" 2^>nul') do (  
        echo Pruefe Log: %%~ni
        for /f "delims=_" %%d in ("%%~nxi") do find "%%d" "%Sonntage%">nul || if "%%~nxi" geq "%Von%%PostFix%" if "%%~nxi" leq "%Bis%%PostFix%" (  
            echo #Entpacke Log: %%~ni
            "%UnZIP%" e -y "%%i" -o"%Sammel%" >nul  
            if exist "%Sammel%\%%~ni" for /f %%a in ("%%~ni") do ren "%Sammel%\%%~ni" %%~na-%%~nxv%%~xa"  
        )
    )
)
Bei dieser Gelegenheit habe ich auch gleich Variablen für die beiden Dateien "LogFileunzip.ini" (diesen Pfad musst Du noch anpassen) und "Sonntage.txt" verwendet - macht's etwas änderungsfreundlicher.

Grüße
bastla

P.S.: Bitte verwende in Zukunft für das Posten von Batches entsprechende .
Mitglied: Attituder
Attituder 14.10.2008 um 11:31:30 Uhr
Goto Top
Besten Dank! Funktioniert nun einwandfrei!
Mitglied: Attituder
Attituder 14.10.2008 um 16:27:59 Uhr
Goto Top
Mir ist noch was spezifisches eingefallen...

Folgende Situation:

Die Batch-Datei ist ja momentan so aufgebaut, dass sie "alle" Logs im Ordner durchsucht und dementsprechend in einen Ordner sammelt. Ich habe die Logs nun so geändert, dass sie folgendenden Dateinamen vorweisen: 20081014_Logfiles_PC01.txt.zip usw.

Nun ist es so, dass ich vorhabe Logfiles bestimmter Clients in einen bestimmten Ordner zu sammeln und nicht wie bisher in einen gemeinsamen Ordner. Nun stellt sich sicherlich die Frage, warum?

Die Clients befinden sich in verschiedenen Abteilungen: Grafik, Buchhaltung etc. Mit diesem zusätlichen Feature is es ja möglich die Logfiles der Clients in den dementsprechenden "Abteilungsordner" zu sammeln um diese dann auszuwerten.

Eine Batch-File zum auswerten hab ich schon programmiert. In jedem dieser Abteilungsordner wird nach Ausführung dieser Batch-File eine Result.txt erstellt.

Ich bin nur noch nicht auf eine Lösung gekommen, diese Result.txt in den verschiedenen Abteilungsordnern zu einer txt-Datei zusammenzufassen um somit ein Endresultat aller Abteilungen zu erhalten.

Desweiteren wurde hier das Problem mit den Sonntagen mit einer Ini-File gelöst. Diese Lösung hätte ich auch gerne in meiner Auswertungs-Batch-File, so dass ich in der Ini-File angeben kann, nach welchem Suchbegriff er die Logfiles auslesen soll.

Vielen Dank schonmal im vorraus.

MfG
Attituder
Mitglied: bastla
bastla 14.10.2008 um 22:31:11 Uhr
Goto Top
Hallo Attituder!

Zum Aufteilen der einzelnen Client-Logs in die entsprechenden Ordner benötigst Du eine Zuordnung (sinnvoller Weise wieder als Textdatei, zB "Abteilungen.txt") zwischen Client und Abteilung, also etwa
<code type=plain">
PC01:Grafik
PC02:Grafik
PC03:Buchhaltung
...

Der "Entpack- und Verteil-"Batch könnte dann so aussehen:
@echo off & setlocal

set "Ini=I:\Logfiles\LogFileunzip.ini"  
set "Basis=I:\Logfiles"  
set "Postfix=_Logfiles_*.txt.zip"  
set "AbtBasis=I:\LogsAbteilungen"  

set "UnZIP=I:\batch\7za.exe"  
set "Sonntage=I:\batch\Sonntage.txt"  
set "Abteilungen=I:\batch\Abteilungen.txt"  

for /f "usebackq delims=" %%i in ("%Ini%") do Set "%%i"  
if exist "%AbtBasis%" rd /s /q "%AbtBasis%"  
for /d %%v in ("%Basis%\*.*") do (  
    echo Bearbeite Client: %%~nxv
    for /f %%i in ('dir /s /b /a-d "%%v\20??????%Postfix%" 2^>nul') do (  
        echo Pruefe Log: %%~ni
        for /f "tokens=1,3 delims=_." %%d in ("%%~nxi") do (  
            find "%%d" "%Sonntage%">nul || if "%%d" geq "%Von%" if "%%d" leq "%Bis%" (  
                echo Gefunden Log: %%d_%%e
                for /f "tokens=2 delims=:" %%a in ('findstr /i "%%e:" "%Abteilungen%"') do (  
                    echo #Entpacke nach: %%a
                    "%UnZIP%" e -y "%%i" -o"%AbtBasis%\%%a" >nul  
                )
            )
        )
    )
)
Der vormalige Ordner %Sammel% ist hier ersetzt durch den Ordner %AbtBasis%, wobei dieser Ordner zunächst entfernt (um alte Werte zu eliminieren) und dann durch das Entpacken bei Bedarf automatisch für jede Abteilung neu erstellt wird.
Ich bin nur noch nicht auf eine Lösung gekommen, diese Result.txt in den verschiedenen Abteilungsordnern zu einer txt-Datei zusammenzufassen um somit ein Endresultat aller Abteilungen zu erhalten.
Wenn tatsächlich alle "Result.txt" in eine Datei sollen, lässt sich das relativ einfach realisieren:
@echo off & setlocal
set "AbtBasis=I:\LogsAbteilungen"  
set "Einzel=Result.txt"  
set "Gesamt=I:\LogsAbteilungen\Gesamt.txt"  

if exist "%Gesamt%" del "%Gesamt%"  
for /f "delims=" %%i in ('dir /s /b /a-d "%AbtBasis%\%Einzel%"') do type "%%i">>"%Gesamt%  
Desweiteren wurde hier das Problem mit den Sonntagen mit einer Ini-File gelöst. Diese Lösung hätte ich auch gerne in meiner Auswertungs-Batch-File, so dass ich in der Ini-File angeben kann, nach welchem Suchbegriff er die Logfiles auslesen soll.
Dazu wäre es sinnvoll, zunächst den Auswertungs-Batch zu posten.

Grüße
bastla
Mitglied: Biber
Biber 15.10.2008 um 08:30:10 Uhr
Goto Top
@Attituder & bastla
Dazu wäre es sinnvoll, zunächst den Auswertungs-Batch zu posten.
Noch sinnvoller wäre es danach, Dein (fast) gelöstes Problem und die sich abzeichnende Musterlösung nochmals -bereinigt um ein paar Herantastversuche in diesem Thread- als Tutorial im Bereich "Batch & Shell" bereitzustellen.

Könntest Du, @Attituder, Dich dieser Aufgabe bei Gelegenheit annehmen?

Ich empfinde jedenfalls diese Batch-Lösung als echtes Praxis-Beispiel eine Bereicherung für dieses Forum.

Grüße
Biber
Mitglied: Attituder
Attituder 16.10.2008 um 16:20:28 Uhr
Goto Top
Kann ich gerne machen.

Anbei hier meine Batch-Datei, was mir ehrlich gesagt ein bisschen peinlich ist, da ich in sachen Batch nicht viel Erfahrungen habe was sicherlich auch sehr gut zu erkennen ist und sich manche Programmierer die Haare raufen werden ;). Aber diese Batch-Datei erfüllt Ihren Sinn und Zweck.

set "search=SUCHBEGRIFF"  
copy *.txt GESAMT.txt
find ("%search%") GESAMT.txt > FILE.txt  
del GESAMT.txt
find " 08:" FILE.txt > 08.txt   
find " 09:" FILE.txt > 09.txt  
find " 10:" FILE.txt > 10.txt   
find " 11:" FILE.txt > 11.txt   
find " 12:" FILE.txt > 12.txt   
find " 13:" FILE.txt > 13.txt   
find " 14:" FILE.txt > 14.txt   
find " 15:" FILE.txt > 15.txt   
find " 16:" FILE.txt > 16.txt   
find " 17:" FILE.txt > 17.txt   
find " 18:" FILE.txt > 18.txt   
find " 19:" FILE.txt > 19.txt   
copy 08.txt+09.txt+10.txt+11.txt+12.txt+13.txt+14.txt+15.txt+16.txt+17.txt+18.txt+19.txt ANZAHL.txt
del 0*.txt
del 1*.txt
del FILE.txt
find /c ("%search%") ANZAHL.txt > RESULT.txt  
del ANZAHL.txt
result.txt

Die Datei wird hierbei innerhalb des Verzeichnisses der jeweiligen Abteilung ausgeführt. Es werden die Daten mit dem "Suchbegriff" gesammelt von 08-20 Uhr.

Das derzeitige Problem ist, das sich hierbei die Datei in "jedem" Abteilungsverzeichnis befinden muss und das ich jede Datei wieder einzeln bearbeiten müsste, wenn ich nach einem anderem Suchbegriff suchen möchte.

Danke nochmal für Eure Hilfe!
Mitglied: bastla
bastla 22.10.2008 um 13:12:53 Uhr
Goto Top
Hallo Attituder!

Soferne ich das richtig interpretiere, zählt Dein Batch die Anzahl der Vorkommen von "SUCHBEGRIFF" im Zeitraum 08:00:00 bis 19:59:59 innerhalb aller .txt-Dateien und schreibt das Ergebnis in "result.txt".

Etwas knapper (und mit leicht veränderter Ergebnisdarstellung) ließe sich das etwa so formulieren:
@echo off & setlocal
set "search=SUCHBEGRIFF"  
set T=Daten
if exist %T% del %T%
for %%i in (08 09 10 11 12 13 14 15 16 17 18 19) do findstr /c:" %%i:" *.txt>>%T%  
for /f "tokens=2 delims=:" %%i in ('find /c "%search%" %T%') do >RESULT.txt echo %search%:%%i   
result.txt
del %T%
Ganz klar ist mir allerdings noch nicht, welches Ziel Du genau anstrebst. Soll in jedem Abteilungsunterordner eine "result.txt" erstellt werden, oder möchtest Du alle Anzahlen in einer einzigen Datei zusammenfasssen?

Grüße
bastla
Mitglied: Attituder
Attituder 24.10.2008 um 08:23:04 Uhr
Goto Top
Es soll ja in jedem Abteilungsordner nach dem gleichen Suchbegriff gesucht werden. Von daher habe ich das momentan so gelöst, dass in jedem Abteilungsordner diese Batch-Datei vorhanden ist und ausgeführt wird.

Das Problem was ich habe ist, dass wenn ich nach einem neuen Suchbegriff suchen will ich in jedem Abteilungsordner die Batch-Datei von Hand ändern müsste. Von daher wäre eine Lösung wo ich den Suchbegriff in einer Datei angeben kann und diese dann von allen Batch-Dateien innerhalb des Abteilungsordners ausgelesen wird von Vorteil.

Letztendlich sollen am Schluss in einer Text-Datei der Name des Abteilungsordners + zusätzlich die gefundene Anzahl des Suchbegriffes innerhalb des festgelegten Zeitraums angezeigt werden.
Mitglied: bastla
bastla 24.10.2008 um 16:16:30 Uhr
Goto Top
Hallo Attituder!

Da ich noch immer nicht genau weiß, ob nun die einzelnen "result.txt" in den Abteilungsordnern erwünscht sind oder nicht, erstellt der folgende Batch sowohl diese Dateien als auch eine Datei mit der Zusammenfassung der Einzelergebnisse:
@echo off & setlocal
set "search=SUCHBEGRIFF"  
set "AbtBasis=I:\LogsAbteilungen"  
set "Gesamt=I:\LogsAbteilungen\Gesamt.txt"  

set "Einzel=Result.txt"  
set "T=Daten.tmp"  
if exist "%Gesamt%" del "%Gesamt%"  
for /d %%v in ("%AbtBasis%\*.*") do (  
    pushd "%%v"  
    if exist "%T%" del "%T%"  
    if exist "%Einzel%" del "%Einzel%"  
    for %%i in (08 09 10 11 12 13 14 15 16 17 18 19) do findstr /c:" %%i:" *.txt>>"%T%"  
    for /f "tokens=2 delims=:" %%i in ('find /c "%search%" "%T%"') do (  
        >"%Einzel%" echo %search%:%%i  
        >>"%Gesamt%" echo %%~nxv:%%i  
    )
    del "%T%"  
)
popd
"%Gesamt%"  
Die letzte Zeile dient der sofortigen Anzeige des Ergebnisses im Editor und kann natürlich ersatzlos gestrichen werden.

Um den Suchbegriff einer Datei entnehmen zu können, kannst Du die Zeile
set "search=SUCHBEGRIFF"
auf
set /p search=<"I:\AbteilungsLogs\Suchbegriff.txt"
ändern.

Grüße
bastla
Mitglied: Attituder
Attituder 24.10.2008 um 22:07:25 Uhr
Goto Top
Genauso habe ich mir das vorgestellt. Ein Traum! Funktioniert wunderbar.

Danke für alles bastla!