Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Inhalt von meheren Log-Dateien zusammenführen (an gewisse Zeilen)

Frage Entwicklung Batch & Shell

Mitglied: SaschaRD

SaschaRD (Level 1) - Jetzt verbinden

11.07.2013 um 13:21 Uhr, 2250 Aufrufe, 6 Kommentare

Hallo zusammen,

ich habe ein Problemchen und hoffe jemand hat eine Lösung für mich.

Ich habe über Batchskripte die Installation einer Software (Client, Server etc.) automatisiert (die täglich neu gebaut wird (daily build)). Hierbei ruft das Vater Batchskript, Kinder Batchskripte auf. Das Vater Batchskript erzeugt 2-Log-Dateien und jedes Kind Batchskript jeweils 2-Log-Dateien.

Nach Durchlauf der Batchskripte wird eine E-Mail generiert und mir zugesandt. Dabei möchte ich gern den Dateien Anhang auf 2-Log-Dateien minimieren. Den Inhalt der Kind Log-Dateien möchte ich gern in die Vater Log-Dateien kopieren, dies habe ich mit:

copy copy_process%DATE%.log /b process_%DATE%.log

durchgeführt. Der Inhalt wird jedoch an die letzten Zeile der Vater Log-Datei mit angehangen

Beispiel aus copy_process.log:

start copy process: 11.07.2013:
10:56:24,59: copy Client
10:56:44,82: Client successful copied
10:56:44,84: copy Server
10:57:41,59: Server successful copied
10:57:41,59: copy CLI
11:00:39,95: CLI successful copied
11:00:39,95: copy Runtime
11:04:40,83: Runtime successful copied

Was ich jedoch gern möchte ist den Inhalt aus den Kind Log-Dateien in gewisse Zeilen kopieren, damit ist das Lesen der unterschiedlichen Installationsschritte wesentlich einfacher.

Beispiel process.log (Vater Log-Datei):

prepare daily build installation: 11.07.2013:
10:56:24,15: check daily build version: 11.07.2013 server - 11.07.2013 client are equal
10:56:24,39: delete local daily build data
10:56:24,56: local daily build data successful deleted
daily build installation successful prepared.

Der Inhalt aus copy_process.log müsste zwischen Zeile 4 und 5 kopiert werden usw.

Wäre super wenn jemand eine Lösung für mein Problemchen hat.

Vielen Dank im Voraus.

Gruß, Sascha


Mitglied: 76109
11.07.2013 um 13:59 Uhr
Hallo SaschaRD!

Um das Ganze etwas zu vereinfachen, wäre es eventuell sinnvoll, an den betreffenden Stellen in der Vater.Log Platzhalter in der Form 'reserved copy_procress.log' mit reinzuschreiben...

Gruß Dieter
Bitte warten ..
Mitglied: andimue
11.07.2013 um 14:40 Uhr
Hallo,

wenn es dir möglich wäre bei allen Zeilen im Vater- und Kind-log vorne eine Uhrzeit reinzuschreiben könntest du später alle Zeilen einfach zusammenkopieren und anschliessend sortieren.

Gruß
Andi
Bitte warten ..
Mitglied: Endoro
11.07.2013 um 14:48 Uhr
Zitat von SaschaRD:
Wäre super wenn jemand eine Lösung für mein Problemchen hat.

Hallo Sascha,
klar ist das zu machen. Ist aber aufwendig.
Wäre mir nix für batch.

lg
Bitte warten ..
Mitglied: pieh-ejdsch
11.07.2013 um 15:05 Uhr
moin Sascha,

ich würde den Hauptbatch anpassen:

01.
 rem Bis Hierhin zum Start der 1.Sub 
02.
call "%~dp0Sub1.cmd" 
03.
copy copy_process%DATE%.log /b process_%DATE%.log 
04.
 rem Dann weiter im Script
Gruß Phil
Bitte warten ..
Mitglied: SaschaRD
11.07.2013 um 15:49 Uhr
Ha! Verdammte Axt...

Habe es soeben eingebaut und es funktioniert! So simple! Den Gedanken muss man aber erst mal haben!

Ich möchte recht herzlich bei allen bedanken für Ihre Antworten.

Im Vater Batchskript wurde nachdem Aufruf des Kindes:
copy /b %LOGFILE%+%COPYPRO% %LOGFILE%
eingefügt.

Das Resultat sieht dann so aus:
prepare daily build installation: 11.07.2013:
15:38:39,06: daily build version: 11.07.2013 server and 11.07.2013 local are equal
15:38:39,31: delete local daily build data
15:38:39,72: local daily build data successful deleted
start copy process: 11.07.2013:
15:38:39,77: copy Client
15:38:58,02: Client successful copied
15:38:58,02: copy Server
15:39:39,78: Server successful copied
15:39:39,78: copy CLI
15:40:32,34: CLI successful copied
15:40:32,34: copy Runtime
15:41:27,56: Runtime successful copied
daily build installation successful prepared.

Unglaublich ... ich war schon dabei eine For-Schleife zu basteln ^_^

Herzlichen Dank nochmal..
Bitte warten ..
Mitglied: Endoro
11.07.2013, aktualisiert um 17:35 Uhr
Zitat von SaschaRD:
Unglaublich ... ich war schon dabei eine For-Schleife zu basteln ^_^

Das hab ich mal gemacht, es ging leichter als gedacht und ist durch die viele findstr Regex furchtbar langsam.
Ich klebe es mal hier rein, zur Warnung an spätere Generationen

01.
@ECHO OFF &SETLOCAL 
02.
SET "mainlog=main.log" 
03.
SET "childlogs=??.log" 
04.
 
05.
FOR %%a IN ("%childlogs%") DO ( 
06.
	SET "ftime=" 
07.
	FOR /f "tokens=1-3delims=:" %%b IN ('findstr "^[0-2][0-9]:[0-5][0-9]:[0-5][0-9],[0-9][0-9]:" "%%~a"') DO ( 
08.
		IF NOT DEFINED ftime ( 
09.
			SET "$%%b:%%c:%%d=%%a" 
10.
			SET "ftime=%%a" 
11.
12.
13.
14.
FOR /f "delims=" %%a IN ('findstr /n "^" "%mainlog%"') DO ( 
15.
	SET "line=%%a" 
16.
	SETLOCAL ENABLEDELAYEDEXPANSION 
17.
	SET "line=!line:*:=!" 
18.
	CALL :doline 
19.
	FOR /f "tokens=1*delims==" %%x IN ('SET "$"') DO (IF NOT "!"=="" ENDLOCAL)&SET "%%x=%%y" 
20.
21.
goto:eof 
22.
 
23.
:doline 
24.
SETLOCAL ENABLEDELAYEDEXPANSION 
25.
ECHO("!line!"|findstr "^.[0-2][0-9]:[0-5][0-9]:[0-5][0-9],[0-9][0-9]:" >nul|| (echo(!line!&goto:eof) 
26.
FOR /f "tokens=1-3delims=:" %%b IN ("!line!") DO SET "ltime=%%b:%%c:%%d" 
27.
FOR /f "tokens=1*delims=$=" %%a IN ('set "$"') DO ( 
28.
	IF "%ltime%" gtr "%%a" IF NOT "%%b"=="0" ( 
29.
		< "%%~b" MORE 
30.
		SET "$%%a=0" 
31.
32.
33.
ECHO(!line! 
34.
FOR /f "tokens=1*delims==" %%a IN ('SET "$"') DO (IF "!"=="" ENDLOCAL)&SET "%%a=%%b" 
35.
goto:eof
lg
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...