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

gelöst Textdokument mit Forschleife Auswerten und ausgeben

Mitglied: Dpole86

Dpole86 (Level 1) - Jetzt verbinden

25.11.2013 um 11:26 Uhr, 1294 Aufrufe, 11 Kommentare

Guten Morgen zusammen.

Mal wieder habe ich eine Aufgabe wo ich ein Textdokument parsen muss.

Das Textdokument sieht folgendermassen aus:
2013/10/25 16:00:07 [2888] connect from NBAPS185
2013/10/25 16:00:08 [2888] rsync on AdminClients/ from nbaps185
2013/10/25 16:00:08 [2672] connect from NBAPS141
2013/10/25 16:00:08 [2888] building file list
2013/10/25 16:00:08 [2672] rsync on AdminClients/ from nbaps141
2013/10/25 16:00:08 [2672] building file list
2013/10/25 16:00:08 [2888] sent 9853 bytes received 2540 bytes total size 21576781
2013/10/25 16:00:09 [2672] sent 10919 bytes received 2720 bytes total size 21576781
2013/10/25 16:00:11 [3476] connect from
2013/10/25 16:00:11 [3476] rsync on adminservicevmnew/ from
2013/10/25 16:00:11 [3476] building file list
2013/10/25 16:00:13 [3852] connect from NBAPS49
2013/10/25 16:00:13 [3852] rsync on AdminClients/ from nbaps49
2013/10/25 16:00:13 [3476] sent 7143 bytes received 74 bytes total size 414994843
2013/10/25 16:00:13 [3852] building file list
2013/10/25 16:00:15 [3852] sent 10922 bytes received 2723 bytes total size 21576781
2013/10/25 16:04:13 [3768] connect from NBAPS85
2013/10/25 16:04:13 [3768] rsync on AdminClients/ from nbaps85
2013/10/25 16:04:14 [3768] building file list
2013/10/25 16:04:14 [3768] sent 9853 bytes received 2540 bytes total size 21576781
2013/10/25 16:07:31 [3120] connect from UNKNOWN
2013/10/25 16:07:31 [3120] rsync on AdminClients/ from unknown
2013/10/25 16:07:31 [3120] building file list
2013/10/25 16:07:32 [3120] sent 9853 bytes received 2540 bytes total size 21576781

2013/10/25 16:08:00 [3948] connect from UNKNOWN
2013/10/25 16:08:02 [3948] rsync on AdminClients/ from unknown
2013/10/25 16:08:02 [3948] building file list
2013/10/25 16:08:04 [3948] sent 9853 bytes received 2540 bytes total size 21576781
2013/10/25 16:08:38 [3772] connect from
2013/10/25 16:08:38 [3772] rsync on adminservicevmnew/ from
Ich soll nun aus diesem Dokument Die Zeile wo sich NBAPS befindet ausgeben undzwar mit folgendem Format:

Rechner NBAPS gemeldet am %Datum%

Ich habe mich etwas reingelesen und mein Ansatz ist folgender:
FOR /F "tokens=1,3,4* delims= " %f IN (text.log) DO (findstr /I /S /C:"connect") echo %a %b %c
allerdings erhalte ich den fehler: Echo was unexpected this time


Was mach ich falsch?

Vielen Dank schon mal für eine Hilfe
Mitglied: Snowman25
25.11.2013 um 11:34 Uhr
Hallo Dpole86,

das scheint mir nicht ganz richtig, da ist ein Denkfehler drin.
Erkläre uns doch bitte kurz, wie du dir die Abarbeitung in der Schleife gedacht hast.

Gruß,
Snowman25
Bitte warten ..
Mitglied: Dpole86
25.11.2013 um 11:52 Uhr
Hi Snowman


Vielen Dank für die Schnelle Antwort.

Also

mit dem Tokens=1,4* sage ich das er mir das Datum (2013/10/25) speichert. in Token 4* soll er alles andere ab "connect" speichern, was er in der Schleife "IN (text.log) DO (findstr /I /S /C:"connect")" durchsucht und mir den Token 1,4* als %%a %%b ausgibt.
Mit Delims= " sag ich der schleife das für jedes leerzeichen ein neues Token erstellt wird?

Ist ein bischen wirr geschrieben tut mir leid nur kann ich es nicht anders erklären.

Ich will am Ende das Datum und die Zeile ab "connect" in variablen haben.

Grüße und Danke

Roman
Bitte warten ..
Mitglied: Snowman25
25.11.2013, aktualisiert um 13:04 Uhr
Hi Dpole86,

mach's so:
01.
FOR /F "tokens=1,2,3,6 delims= " %a IN ('type text.log^|findstr NBAPS') DO @ECHO Rechner %d gemeldet am %a um %b. %c
Gruß, Snowman25

€dith:
Zitat von Dpole86:

Ich will am Ende das Datum und die Zeile ab "connect" in variablen haben.
Dann doch eher so:
01.
FOR /F "tokens=1-6 delims= " %a IN ('type test.log^|findstr NBAPS') DO @ECHO Rechner %f gemeldet am %a um %b. %c
Den Teil ab der ID kannst du dann mit
Echo %d %e %f
rekonstruieren.

Vergiss nicht, dass in einem Batchfile alle Schleifenvariablen doppelte %-Zeichen brauchen!
Bitte warten ..
Mitglied: Dpole86
25.11.2013 um 13:10 Uhr
Perfekt Danke :D



FOR /F "tokens=1,2,3,6 delims= " %%a IN ('type text.log^|findstr NBAPS') DO @ECHO Rechner %%d gemeldet am %%a um %%b. %%c

Kurz zumVerständnis.. was macht ^ ? und wozu ist das @ Echo ?

GrüßeRoman
Bitte warten ..
Mitglied: Snowman25
25.11.2013, aktualisiert um 13:20 Uhr
Zitat von Dpole86:

Kurz zumVerständnis.. was macht ^ ? und wozu ist das @ Echo ?
Das Caret (^) ist zur Maskierung der Pipe (|). Würde dieses nicht maskiert werden, würde der Befehlszeileninterpreter (die cmd) versuchen, das Ergebnis von FOR /F "tokens=1,2,3,6 delims= " %%a IN ('type text.log als Input für findstr NBAPS') DO ECHO Rechner %%d gemeldet am %%a um %%b. %%c zu verwenden. Das zerstört allerdings die Syntax von FOR und endet dadurch ganz einfach in einem Fehler.
Mit dem Caret wird es richtig geparst: type text.log wird als Input für den findstr NBAPS-Befehl verwendet.

Das at-Zeichen (@) dient zum verstecken der Eingabezeile auf der Ausgabekonsole. Wenn du den Befehl auf der Kommandozeile ausführst, siehst du den Unterschied:
MIT @:
C:\Users\me\Desktop>FOR /F "tokens=1-6 delims= " %a IN ('type test.log^|findstr NBAPS') DO @ECHO Rechner %f gemeldet am %a um %b. %c 
Rechner NBAPS185 gemeldet am 2013/10/25 um 16:00:07. [2888] 
Rechner NBAPS141 gemeldet am 2013/10/25 um 16:00:08. [2672] 
Rechner NBAPS49 gemeldet am 2013/10/25 um 16:00:13. [3852] 
Rechner NBAPS85 gemeldet am 2013/10/25 um 16:04:13. [3768]
OHNE @:
C:\Users\me\Desktop>FOR /F "tokens=1-6 delims= " %a IN ('type test.log^|findstr NBAPS') DO ECHO Rechner %f gemeldet am %a um %b. %c 
 
C:\Users\me\Desktop>ECHO Rechner NBAPS185 gemeldet am 2013/10/25 um 16:00:07. [2888] 
Rechner NBAPS185 gemeldet am 2013/10/25 um 16:00:07. [2888] 
 
C:\Users\me\Desktop>ECHO Rechner NBAPS141 gemeldet am 2013/10/25 um 16:00:08. [2672] 
Rechner NBAPS141 gemeldet am 2013/10/25 um 16:00:08. [2672] 
 
C:\Users\me\Desktop>ECHO Rechner NBAPS49 gemeldet am 2013/10/25 um 16:00:13. [3852] 
Rechner NBAPS49 gemeldet am 2013/10/25 um 16:00:13. [3852] 
 
C:\Users\me\Desktop>ECHO Rechner NBAPS85 gemeldet am 2013/10/25 um 16:04:13. [3768] 
Rechner NBAPS85 gemeldet am 2013/10/25 um 16:04:13. [3768]
Gruß,
Snowman25
Bitte warten ..
Mitglied: Dpole86
25.11.2013 um 13:22 Uhr
Vielen Herzlichen Dank :D

gibt es die Möglichkeit das ich den output mit ";" trenne und das in eine CSV exportiere?

also so, dass das ";" als trennzeichen für die spalten wirkt?

Grüße Roman
Bitte warten ..
Mitglied: Snowman25
25.11.2013, aktualisiert um 13:32 Uhr
Zitat von Dpole86:

Vielen Herzlichen Dank :D

gibt es die Möglichkeit das ich den output mit ";" trenne und das in eine CSV exportiere?
01.
SET logfile=text.log 
02.
SET outputfile=output.csv 
03.
SET searchstring=NBAPS 
04.
 
05.
FOR /F "tokens=1-6 delims= " %a IN ('type %logfile%^|findstr %searchstring%') DO ( 
06.
	@ECHO Rechner %f gemeldet am %a um %b. %c 
07.
	@Echo %a;%b;%c;%d;%f>>%outputfile% 
08.
)
Gibt folgenden Output in output.csv:
2013/10/25;16:00:07;[2888];connect;NBAPS185 
2013/10/25;16:00:08;[2672];connect;NBAPS141 
2013/10/25;16:00:13;[3852];connect;NBAPS49 
2013/10/25;16:04:13;[3768];connect;NBAPS85
Wenn das alles ist, beachte bitte Wie kann ich einen Beitrag auf "gelöst" oder "erledigt" setzen?.
Bitte warten ..
Mitglied: Dpole86
25.11.2013 um 13:48 Uhr
Dankeschön

habs aber auch selber hinbekommen da wir englisches Office haben

FOR /F "tokens=1,2,3,6 delims= " %%a IN ('type C:\win\bat\rsyncd.log^|findstr NBAPS') DO @ECHO "Rechner %%d","gemeldet am %%a","%%b">> C:\win\bat\test.csv


Grüße Roman
Bitte warten ..
Mitglied: Dpole86
26.11.2013 um 14:01 Uhr
Hi Bastla

wie kann ich solche Zeilen "ignorieren" ?

2013/09/05 12:47:59 [4612] forward name lookup for NBAPS166 failed: hostname nor servname provided, or not known

Weil er gibt mir immer dieses "not" in dm CSV aus. (warum auch immer)

reicht es wenn ich in die Forschleife noch ein |findstr /v not mache?

Grüße Roman
Bitte warten ..
Mitglied: Snowman25
26.11.2013, aktualisiert um 14:08 Uhr
Ich bin nicht bastla, der Thread sollte schon längst gelöst sein aber hier ist deine Antwort:
01.
SET logfile=text.log 
02.
SET outputfile=output.csv 
03.
SET searchstring=NBAPS 
04.
SET searchexclude=not 
05.
 
06.
FOR /F "tokens=1-6 delims= " %%a IN ('type %logfile%^|findstr %searchstring%^|findstr /V %searchexclude%') DO ( 
07.
	@ECHO Rechner %%f gemeldet am %%a um %%b. %%c 
08.
	@Echo %%a;%%b;%%c;%%d;%%f>>%outputfile% 
09.
)

Und hättest du gleich geschrieben, dass du ein rsync-Log auswerten möchtest und eine aktuelle Liste aller Clients und deren letzte Connect-Daten haben möchtest, wären wir auch schon fertig
Bitte warten ..
Mitglied: Dpole86
26.11.2013 um 14:16 Uhr
Sorry Snowman
Ich lese hier nur grad dauernd von bastla paar threats und da habe ich nimmer dran gedacht

Danke für den Code und sorry für den langen Prozess. Ich mag halt einen step by step anleitung weil ich dann dadurch mehr lerne.

Trotzdem Danke dir

Und ja Threat ist gelöst ...jetzt :D
Bitte warten ..
Ähnliche Inhalte
HTML
Textdokument in HTML einbauen
gelöst Frage von deinernstjetztHTML2 Kommentare

Hallo, ich möchte in HTML ein Textdokument für zb. AGB's einbauen. Das sollte in einem ca 200x200px Feld angezeigt ...

Batch & Shell
Zeilen aus Textdokument kopieren
gelöst Frage von stridingBatch & Shell6 Kommentare

Hallo Administrator-Community! Ich stehe mal wieder vor einer, für mich, komplizierten Aufgabe, und bestimmt kann mir auch diesmal jemand ...

Netzwerke
SFlows auswerten
Frage von cgicloudNetzwerke2 Kommentare

Hallo zusammen, bin gerade am Einrichten von sFlows. Das Einsammeln und Ausgeben der Flows an sich funktioniert problemlos. Allerdings ...

Batch & Shell
CSV Dateien auswerten mit Script
gelöst Frage von Crank69Batch & Shell8 Kommentare

Hallo Leute, habe ein Problem und hoffe ihr könnt mir helfen. Ich hoffe das die Bilder helfen bei meinem ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...