Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

GELÖST

findstr mehrmals auf Ausgabe eines make anwenden

Mitglied: ceerotolerance

ceerotolerance (Level 1) - Jetzt verbinden

27.07.2009, aktualisiert 10:05 Uhr, 3553 Aufrufe, 10 Kommentare

Hallo Zusammen
Ich bin schon länger dabei, habe aber bisher noch nicht sehr aktiv mitgemacht.
Nun habe ich eine Frage zum batchen. Ich hoffe es kann jemand weiter helfen. Danke schonmal.

Für einen Microcontroller habe ich eine Batch Datei, die mir den Ablauf des Compilieren, linken usw. abnimmt.
Ich möchte nun nach dem make schauen, ob es irgendwelche Fehler gegeben hat. Die Ausgabe des make sieht in etwa so aus:

01.
PolyMake V3.3 for MSDOS 
02.
Copyright 1984-1990 Sage Software, Inc.  All rights reserved. 
03.
Today's date is 27 Jul 2009  9:17:16. 
04.
a166 start167.a66 SET (HLARGE) M167 
05.
 
06.
A166 MACRO ASSEMBLER V4.20 - SN: C6D4U-70025E 
07.
COPYRIGHT KEIL ELEKTRONIK GmbH 1991 - 2001 
08.
 
09.
ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S) 
10.
 
11.
c166 kyoMAIN.c HLARGE WL(2) OT(6,SPEED) 
12.
 
13.
C166 COMPILER V4.20c - SN: C6D4U-70025E 
14.
COPYRIGHT KEIL ELEKTRONIK GmbH 1991 - 2001 
15.
 
16.
C166 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S) 
17.
c166 Flash.c HLARGE WL(2) OT(6,SPEED) 
18.
 
19.
C166 COMPILER V4.20c - SN: C6D4U-70025E 
20.
COPYRIGHT KEIL ELEKTRONIK GmbH 1991 - 2001 
21.
 
22.
C166 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S) 
23.
make complete.
Wichtig sind immer die Zeilen mit "...COMPLETE. X WARNING(S), Y ERROR(S)".
Ich hab es hingekriegt, dass ich die Warnings und Errors auslesen kann, jedoch überspringt es die Zeile "ASSEMBLY COMPLETE". Warum weiss ich nicht.

Wenn das ganze für euch zu einfach ist, wäre es schön, wenn man noch den Dateinamen z.B. "kyoMAIN.c" oder "Flash.c" ausgeben könnte, falls ein Fehler auftrat.
Mitglied: rubberman
27.07.2009 um 10:28 Uhr
Hallo ceerotolerance,

da du deinen Code nicht gepostet hast, vermute ich, du liest das ganze in einer FOR-Schleife aus.
Bei Zeilen mit C166 stehen die Werte im 4. bzw 6. Token, sonst im 3. bzw 5.
Könnte die Ursache sein?!
Bitte warten ..
Mitglied: ceerotolerance
27.07.2009 um 10:29 Uhr
Danke für die schnelle Antwort. Den Code habe ich noch nihct gepostet, weil ich noch bisschen daran rumfeile... kommt noch.
Bitte warten ..
Mitglied: ceerotolerance
27.07.2009 um 11:16 Uhr
01.
@echo off & setlocal  
02.
 
03.
for /f "delims=: tokens=1*" %%i in ('findstr /n /l /c:"COMPLETE." "onlymake.log"') do (set Zeile=%%i  & set line=%%j & call :Proc) 
04.
 
05.
:Proc 
06.
if not defined Zeile echo MAKE FAILED! & goto EOF  
07.
set /a Zeile-=1 
08.
 
09.
for /f "tokens=1-7" %%a in ("%line%") do ( 
10.
set a=%%a 
11.
set b=%%b 
12.
set c=%%c 
13.
set d=%%d 
14.
set e=%%e 
15.
set f=%%f 
16.
 
17.
::debug 
18.
echo Word 1: %%a 
19.
echo Word 2: %%b 
20.
echo Word 3: %%c 
21.
echo Word 4: %%d 
22.
echo Word 5: %%e 
23.
echo Word 6: %%f 
24.
25.
pause 
26.
 
27.
:ERRHANDLER 
28.
:: display current file!? 
29.
 
30.
if "%a%"== "C166" ( 
31.
	echo TRUETRUETRUE 
32.
	set Err=%f% 
33.
	set Warn=%c% 
34.
) else ( 
35.
	set Err=%e% 
36.
	set Warn=%c% 
37.
38.
 
39.
echo Warnings: %Warn% 
40.
echo Errors  : %Err% 
Dieser Code funktioniert schon mal nicht schlecht. Es gibt aber ein Problem wenn die Zeile mit C166 anfängt. Den Fall habe ich mit einem if abgefangen, jedoch habe ich in der Variable %Warn% immer "COMPLETE." anstatt den nachfolgenden Zahlenwert. Kann mir das einer erklären? Denn in der Ausgabe (debug) scheint es zu stimmen.
Bitte warten ..
Mitglied: ceerotolerance
27.07.2009 um 11:25 Uhr
OK sorry für den POST vorhin...

habe die If Abfrage folgendermassen verändert:
01.
if "!a!"=="C166" ( 
02.
	echo TRUETRUETRUE 
03.
	set Err=!f! 
04.
	set Warn=!d! 
05.
) else ( 
06.
	set Err=!e! 
07.
	set Warn=!c! 
08.
)
sonst bringt ja das enabledelayedexpansion nichts...
Bitte warten ..
Mitglied: rubberman
27.07.2009 um 11:44 Uhr
Ohne, dass ich das schon genauer getestet habe, ist mir eine Sache sofort ins Auge gesprungen:
Du hast einen Doppelpunkt als Delimiter gesetzt - in den relevanten Zeilen kommt kein Doppelpunkt vor!

EDIT: Sorry - Option /n übersehen
Bitte warten ..
Mitglied: rubberman
27.07.2009 um 12:07 Uhr
Ungetestet!
probier mal
01.
@echo off &setlocal 
02.
 
03.
for /f "delims=. tokens=1,*" %%i in ('findstr /c:"COMPLETE." "onlymake.log"') do ( 
04.
 for /f "tokens=1-3" %%k in ("%%j") do set /a Warn=%%k &set /a Err=%%m &call :Proc 
05.
06.
pause 
07.
goto :eof 
08.
 
09.
:Proc 
10.
 
11.
:: display current file!? 
12.
 
13.
echo Warnings: %Warn% 
14.
echo Errors  : %Err%
Edit: Pause dazu, damit man was sieht
Bitte warten ..
Mitglied: miniversum
27.07.2009 um 13:08 Uhr
Versuch mal das:
01.
@echo off & setlocal   
02.
for /f "tokens=1,3,5 delims=:." %%l in ('findstr /n /c:"COMPLETE." "onlymake.log"') do call :doit %%l %%m %%n 
03.
goto:eof 
04.
 
05.
:doit 
06.
set /a Zeile=%1-6 
07.
set "filename=" 
08.
for /f "skip=%Zeile% tokens=2 delims= " %%i in ('findstr /n /r .* "onlymake.log"') do if not defined filename set filename=%%i 
09.
echo %filename%: 
10.
echo Warnings: %2 
11.
echo Errors      : %3 
12.
echo. 
13.
goto:eof
::edit: Ausgabe bearbeitet
Bitte warten ..
Mitglied: ceerotolerance
28.07.2009 um 09:09 Uhr
Danke euch beiden für eure Beispiele.
@rubberman: Deins habe ich ausprobiert. Leider geht es einmal zuviel durch die äussere Schlaufe. Die Ursache habe ich noch nicht gefunden.
@miniversum: Deins verstehe ich noch nicht ganz. Ich werde es mir zu Gemüte führen, wenn ich einmal bisschen mehr Zeit habe.

Gruss cee
Bitte warten ..
Mitglied: ceerotolerance
28.07.2009 um 09:17 Uhr
@rubberman: Ach mannomann, hatte keine Sprungmarke drin... dein Code funktioniert einwandfrei.
Bitte warten ..
Mitglied: ceerotolerance
28.07.2009 um 10:11 Uhr
@miniversum: Deine Lösung gefällt mir auch. Vorallem das mit dem Filename. Ich musste es noch bisschen abändern damit es auch tatsächlich die Anzahl der Warnings und Errors anzeigt.
01.
@echo off & setlocal 
02.
for /f "tokens=1,3,5,6 delims=:." %%l in ('findstr /n /c:"COMPLETE." "onlymake.log"') do call :doit %%l %%m %%n %%o 
03.
goto :eof  
04.
 
05.
:doit  
06.
 
07.
set /a Zeile=%1-6  
08.
set "filename="  
09.
for /f "skip=%Zeile% tokens=2 delims= " %%i in ('findstr /n /r .* "onlymake.log"') do if not defined filename set filename=%%i  
10.
echo %filename% 
11.
echo ---------------- 
12.
echo Warnings: %2 
13.
echo Errors:   %4 
14.
echo.  
15.
pause 
16.
goto:eof
Bitte warten ..
Ähnliche Inhalte
Windows Tools
Findstr und regex
gelöst Frage von tobmesWindows Tools5 Kommentare

Hi Experten, ich habe ziemlich viele PDF-Dateien, die ich mittels eines Batch-Files nach einem Bestimmten Muster durchsuchen möchte. Die ...

Windows Server
Aktivierungszähler Microsoft bei MAK (VL)
gelöst Frage von departure69Windows Server6 Kommentare

Hallo. Nachdem es von Microsoft noch immer keine für jedermann herunterladbare ISO des W2K16 gibt, und ich leider keinen ...

Windows Server
MAK Keys und KMS Server
gelöst Frage von winlinWindows Server10 Kommentare

Hallöchen, wir haben kürzlich WTS Lizenzen (RDS-CALs) bestellt damit wir unsere virt. Server lizensieren können welche wir für Managementaufgaben ...

Batch & Shell
Hilfe bei findstr reg expression
gelöst Frage von TheUntouchableBatch & Shell5 Kommentare

Hallo liebe Admins, ich bräuchte Hilfe beim erstellen einer reg expression mit findstr: Aus folgender Textdatei sollen nur die ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 4 StundenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 22 StundenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 23 StundenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
gelöst Frage von Windows10GegnerNetzwerkgrundlagen21 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit18 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Netzwerke
Packet loss bei "InternetLeitungsvollauslastung"
gelöst Frage von Freak-On-SiliconNetzwerke17 Kommentare

Servus; Ja der Titel klingt komisch, is aber so. Wenn die Internetleitung voll ausgelastet ist, hab ich extreme packet ...