Logfiles aus mehreren Unterverzeichnissen rekursiv in eine Datei kopieren
Hallo,
Ich habe hier ein Verzeichnis mit täglichen Logfiles, sortiert wiederum in Unterverzeichnissen:
\LOGFILES\DAILY\20120501\CLIENT01.LOG
\LOGFILES\DAILY\20120501\CLIENT02.LOG
\LOGFILES\DAILY\20120501\CLIENT03.LOG
...
\LOGFILES\DAILY\20120502\CLIENT01.LOG
\LOGFILES\DAILY\20120502\CLIENT02.LOG
\LOGFILES\DAILY\20120502\CLIENT03.LOG
...
\LOGFILES\DAILY\20120503\CLIENT01.LOG
\LOGFILES\DAILY\20120503\CLIENT02.LOG
\LOGFILES\DAILY\20120503\CLIENT03.LOG
...
Diese Logs möchte ich nun in eine einzige Datei kopieren, z.B. nach:
\LOGFILES\DAILY\LOGS.LOG
Ich lese mich jetzt hier schon zwei Tage durch, aber eine funktionierende Lösung für mein Problem kann ich bis jetzt leider nicht finden.
Jemand eine Idee, wie ich das Problem lösen kann? Oder ist dies mit Batch nicht möglich?
Danke im Voraus,
ippi
Ich habe hier ein Verzeichnis mit täglichen Logfiles, sortiert wiederum in Unterverzeichnissen:
\LOGFILES\DAILY\20120501\CLIENT01.LOG
\LOGFILES\DAILY\20120501\CLIENT02.LOG
\LOGFILES\DAILY\20120501\CLIENT03.LOG
...
\LOGFILES\DAILY\20120502\CLIENT01.LOG
\LOGFILES\DAILY\20120502\CLIENT02.LOG
\LOGFILES\DAILY\20120502\CLIENT03.LOG
...
\LOGFILES\DAILY\20120503\CLIENT01.LOG
\LOGFILES\DAILY\20120503\CLIENT02.LOG
\LOGFILES\DAILY\20120503\CLIENT03.LOG
...
Diese Logs möchte ich nun in eine einzige Datei kopieren, z.B. nach:
\LOGFILES\DAILY\LOGS.LOG
Ich lese mich jetzt hier schon zwei Tage durch, aber eine funktionierende Lösung für mein Problem kann ich bis jetzt leider nicht finden.
Jemand eine Idee, wie ich das Problem lösen kann? Oder ist dies mit Batch nicht möglich?
Danke im Voraus,
ippi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 184309
Url: https://administrator.de/contentid/184309
Ausgedruckt am: 21.11.2024 um 11:11 Uhr
8 Kommentare
Neuester Kommentar
Moin,
Hmm anhand deiner letzten zeile erkenne ich, dass du in zwei tagen aber wenig im batch bereich gesucht hast, denn dort schreibt jeder, danke immer gerne, wenn man gehilft hat aber blosss nicht vorher.
Also was brauchst du?
Eine batch, die eine schleife durchackert und nach dateien mit der suffix log in einem uebergeordnetetn ordner jahrmonattag sucht und die zu einer zusammenfasst?
Hmmm
For /r oder for /? Oder das tut zur for schleife
Type %a>>neues.logfile oder type /?
Oder copy neues.log + %a neues.log
Gruebel...
Gruss
Hmm anhand deiner letzten zeile erkenne ich, dass du in zwei tagen aber wenig im batch bereich gesucht hast, denn dort schreibt jeder, danke immer gerne, wenn man gehilft hat aber blosss nicht vorher.
Also was brauchst du?
Eine batch, die eine schleife durchackert und nach dateien mit der suffix log in einem uebergeordnetetn ordner jahrmonattag sucht und die zu einer zusammenfasst?
Hmmm
For /r oder for /? Oder das tut zur for schleife
Type %a>>neues.logfile oder type /?
Oder copy neues.log + %a neues.log
Gruebel...
Gruss
ach so, versteh ich nicht
*mea culpa, aber diese Frage war rhetorischer Natur
Und wie das geht (sogar detailliert mit 2 verschiedenen Ansätzen) das findest du, wenn du nicht suchen willst unter der Zeile hmmmm.
Also was brauchst du?
Eine batch, die eine schleife durchackert und nach dateien mit der suffix log in einem uebergeordnetetn ordner jahrmonattag sucht und die zu einer zusammenfasst?
Eine batch, die eine schleife durchackert und nach dateien mit der suffix log in einem uebergeordnetetn ordner jahrmonattag sucht und die zu einer zusammenfasst?
Ja genau
- Perfekt, damit ist doch die Frage:
Jemand eine Idee, wie ich das Problem lösen kann?
beantwortet.Und wie das geht (sogar detailliert mit 2 verschiedenen Ansätzen) das findest du, wenn du nicht suchen willst unter der Zeile hmmmm.
Hallo ipzipzap,
teste mal folgendes:
Ich gehe davon aus, dass sich in den nach dem Datum benannten Verzeichnissen wirklich NUR Logdateien befinden.
Gruß
Friemler
teste mal folgendes:
@echo off & setlocal
set "LogPath=E:\LogFiles\Daily"
set "DestFile=%LogPath%\Logs.log"
if not exist "%DestFile%" type NUL > "%DestFile%"
for /f "delims=" %%d in ('dir /b /a:d /o:ne "%LogPath%"') do (
for /f "delims=" %%f in ('dir /b /a:-d /o:ne "%LogPath%\%%d"') do (
copy /b "%DestFile%"+"%LogPath%\%%d\%%f" "%DestFile%" > NUL
)
)
Ich gehe davon aus, dass sich in den nach dem Datum benannten Verzeichnissen wirklich NUR Logdateien befinden.
Gruß
Friemler
Hallo ipzipzap,
sooo, zurück vom 1. Mai Ausflug .
Nö, kein Problem, genau richtig.
Als Ergänzung für den Fall, das ein Verzeichnis mal GARKEINE Logdateien enthalten sollte oder das Verzeichnis, das eigentlich nach dem Datum benannte Verzeichnisse enthalten sollte, leer ist:
Mit
Gruß
Friemler
sooo, zurück vom 1. Mai Ausflug .
Zitat von @ipzipzap:
Ich hab also nur ein " *.log " hinten drangehängt. Was sagst du dazu?
Siehst Du da Probleme?
Ich hab also nur ein " *.log " hinten drangehängt. Was sagst du dazu?
Siehst Du da Probleme?
Nö, kein Problem, genau richtig.
Als Ergänzung für den Fall, das ein Verzeichnis mal GARKEINE Logdateien enthalten sollte oder das Verzeichnis, das eigentlich nach dem Datum benannte Verzeichnisse enthalten sollte, leer ist:
for /f "delims=" %%d in ('dir /b /a:d /o:ne "%LogPath%" 2>NUL') do (
for /f "delims=" %%f in ('dir /b /a:-d /o:ne "%LogPath%\%%d\*.log" 2>NUL') do (
copy /b "%DestFile%"+"%LogPath%\%%d\%%f" "%DestFile%" > NUL
)
)
Mit
2>NUL
wird der Standardfehlerkanal auf das NUL-Device umgeleitet => Fehlermeldungen wie "Datei nicht gefunden"
werden verschluckt und führen nicht zu einer Verarbeitung der FOR
-Schleife(n).Gruß
Friemler
moin Friemler,
Ja - sicher ist es schon.
Die Forschleife verabeitet Kein Handle 2
scheinbar auch nicht wenn 2 nach 3 dubliziert wird - dafür aber wieder doch wenn dabei 1 nach 3 dubliziert wird.
Microsoft eben!
Gruß Phil
... Fehlermeldungen wie "Datei nicht gefunden" werden verschluckt und führen nicht zu einer Verarbeitung der FOR-Schleife(n).
Ja - sicher ist es schon.
Die Forschleife verabeitet Kein Handle 2
scheinbar auch nicht wenn 2 nach 3 dubliziert wird - dafür aber wieder doch wenn dabei 1 nach 3 dubliziert wird.
>for /f %i in ('dir xy 2^>^&1') do @echo Ausgabe
Ausgabe
Ausgabe
Ausgabe
Ausgabe
>for /f %i in ('dir xy 2^>^&3') do @echo Ausgabe
Datei nicht gefunden
Ausgabe
Ausgabe
Ausgabe
>for /f %i in ('dir xy 1^>^&2 ') do @echo Ausgabe
Datenträger in Laufwerk C: ist Win7
Volumeseriennummer: 6497-D5C3
Verzeichnis von C:\Users\Pieh-Ejdsch
Datei nicht gefunden
>for /f %i in ('dir xy 1^>^&3 2^>^&1') do @echo Ausgabe
Ausgabe
Ausgabe
Ausgabe
Ausgabe
Microsoft eben!
@echo off & setlocal
set "LogPath=E:\LogFiles\Daily"
set "DestFile=%LogPath%\Logs.log"
if not exist "%DestFile%" type NUL > "%DestFile%"
for /d /r "%LogPath%" %%i in (*) do @if exist "%%i\CLIENT*.Log" copy /b "%Destfile%"+"%%i\CLIENT*.Log" "%DestFile%"
Gruß Phil