Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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
Kommentar vom Moderator Biber am 09.03.2010 um 14:47:57 Uhr
Leider funktioniert das nicht so ganz.
Ich werde beantragen, diesen Leer-Satz forumsweit zu bannen.
Wenn das eine Fehlerbeschreibung von erwachsenem Windows-Anwender zu erwachsenem Windows Anwender ist - wie unterhalten sich schulpflichtige PlayStation-Zockerinnen??
GELÖST

Logdatei auswerten und bestimmten Text in Variable speichern

Frage Entwicklung

Mitglied: ForgottenRealm

ForgottenRealm (Level 1) - Jetzt verbinden

09.03.2010, aktualisiert 14:47 Uhr, 5033 Aufrufe, 4 Kommentare

Hallo


Wieder einmal habe ich ein Problem bei einer For-Schleife.

Diesmal möchte ich aus einer bestehenden Logdatei bestimmte Wörter herausfiltern und die komplette Zeile, in der dieses Wort vorkommt, als Variable speichern um diese später verwenden zu können.


Gegeben ist:

@set ERRORCODE=(0x00000002)
@set LOGFILE=%USERPROFILE%\Desktop\Test.log
@set ERRORS=%USERPROFILE%\Desktop\Errors.log

for %%i in ("%LOGFILE%") do findstr /C:"%ERRORCODE%" && echo %%i>>"%ERRORS%"


Leider funktioniert das nicht so ganz.

Wo liegt der Fehler?
Mitglied: bastla
09.03.2010 um 15:06 Uhr
Hallo ForgottenRealm!

Abgesehen davon, dass ich Bibers obigen Antrag aufs Heftigste unterstütze - hast Du es schon mal mit einer "for /f"-Schleife versucht?

Außerdem - nach "als Variable speichern" (auch wenn dies für mehrere Zeilen zumeist ohnehin nicht viel Sinn hat) sieht Dein Code nicht aus ...

... und wenn die Zeilen tatsächlich nur in eine Datei sollten, wäre die Schleife entbehrlich:
findstr /C:"%ERRORCODE%" "%LOGFILE%">"%ERRORS%"
Grüße
bastla
Bitte warten ..
Mitglied: ForgottenRealm
09.03.2010 um 15:31 Uhr
Hi

Ich habe noch etwas an der Datei gearbeitet und bin nun soweit, dass ich die ERRORS Datei erstellt bekomme.

@set ERRORCODE=^(0x00000020^)
@set LOGFILE=Test.log
@set ERRORS=Errors.log
@set NICHTKOPIERT=NichtKopiert.log

type "%LOGFILE%"|findstr /C:"%ERRORCODE%">>"%ERRORS%"

Mit Type gehts auch, wenn auch etwas länger als deine Zeile.

Nun erhalte ich eine weitere Logdatei, aus der ich in jeder Zeile die ersten 71 Zeichen entfernen möchte.

Dafür dachte ich an die nachfolgende Schleife, um jede Zeile abzuarbeiten;

for /f %%L IN (%ERRORS%) DO (
set UNFERTIG=%%L
set FERTIG=%UNFERTIG:~-71%
echo %FERTIG%>>%NICHTKOPIERT%
)

Die erzeugte Logdatei ist allerdings Fehlerhaft, denn es steht dort nur "ECHO ist eingeschaltet (ON)." drin, was darauf hindeutet, dass die Variable %%L nicht erstellt wird.

Die Ausgabe im CMD Window sagt, dass die Variable %unfertig% nur den Wert bis zum ersten Leerzeichen in jeder Zeile bekommt und somit nicht länger als 71 Zeichen ist und somit auch nicht verarbeitet werden kann.

Wenn ich die Variable %ERRORS% im ersten Teil der Schleife mit ' oder " einfasse, wird in beiden Fällen nur der Dateiname verarbeitet und nicht der Inhalt.

Wie lässt sich dies umgehen?
Bitte warten ..
Mitglied: bastla
09.03.2010 um 16:16 Uhr
Hallo ForgottenRealm!

Etwa so:
01.
@echo off & setlocal 
02.
set "ERRORCODE=(0x00000020)" 
03.
set "LOGFILE=Test.log" 
04.
set "ERRORS=Errors.log" 
05.
set "NICHTKOPIERT=NichtKopiert.log" 
06.
 
07.
del "%NICHTKOPIERT%" 2>nul 
08.
findstr /c:"%ERRORCODE%" "%LOGFILE%">"%ERRORS%" 
09.
for /f "usebackq delims=" %%i in ("%ERRORS%") do set "Zeile=%%i" & call :ProcessLine 
10.
goto :eof 
11.
 
12.
:ProcessLine 
13.
>>"%NICHTKOPIERT%" echo %Zeile:~71% 
14.
goto :eof
Wenn die Datei "Errors.log" nicht für andere Zwecke benötigt wird, ließen sich die Zeilen 8 und 9 zu
for /f "delims=" %%i in ('findstr /c:"%ERRORCODE%" "%LOGFILE%"') do set "Zeile=%%i" & call :ProcessLine
zusammenfassen ...

Grüße
bastla

P.S.:
... was darauf hindeutet, dass die Variable %%L nicht erstellt wird.
Tatsächlich werden alle Variablen erstellt, aber da keine "delayedExpansion" (Beispiele und Erklärung mehrfach hier im Forum zu finden) vorgenommen wird, kann auf die Werte der Variablen erst nach dem Abarbeiten der Schleife zugegriffen werden (wo sie in diesem Fall nix mehr nützen) ...
Bitte warten ..
Mitglied: ForgottenRealm
10.03.2010 um 09:07 Uhr
Hallo

Funktioniert einwandfrei, vielen Dank!

Ich habe noch das erste goto :eof durch eine andere Sprunganweisung ausgetauscht, da dieses Programm in ein weiteres Programm eingebunden werden soll, welches sonst ja beendet wird.


Auf die Idee mit dem Call bin ich gar nicht gekommen und bis zu dem Punkt hatte ich die Zeile auch schon mal
Bitte warten ..
Ähnliche Inhalte
KVM
KVM Starter Logdatei erstellen

Frage von OIOOIOOIOIIOOOIIOIIOIOOO zum Thema KVM ...

Batch & Shell
gelöst Batch: Aktuelle Codepage in Variable speichern (3)

Frage von tomaschku zum Thema Batch & Shell ...

PHP
gelöst TXT Datei auslesen und bestimmte Zeilen in Variable setzen (11)

Frage von 126594 zum Thema PHP ...

Batch & Shell
gelöst Wert aus Batch Schleife in Variable speichern (5)

Frage von anmelder zum Thema Batch & Shell ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(2)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Router & Routing
Allnet - VDSL2 Modem - SFP (mini-GBIC) (20)

Frage von Dobby zum Thema Router & Routing ...

Voice over IP
DeutschlandLAN IP Voice Data M Premium, Erfahrung mit Faxgeräte? (17)

Frage von liquidbase zum Thema Voice over IP ...

TK-Netze & Geräte
TK-Anlage VoIP - DECT Erweiterung (16)

Frage von Lynkon zum Thema TK-Netze & Geräte ...