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

verschachtelte for-Schleife oder bessere Idee gesucht

Frage Entwicklung Batch & Shell

Mitglied: InTreaTer

InTreaTer (Level 1) - Jetzt verbinden

14.04.2009, aktualisiert 16:51 Uhr, 10750 Aufrufe, 6 Kommentare

Hallo zusammen!

Ich komme hier einfach nicht weiter und bitte um die Hilfe der batch-Gurus im Forum.

Folgendes ist gegeben:

- ein Verzeichnis mit diversen (sich laufend namentlich ändernden) Logdatein, z.B. log_server_0190.txt, log_server_0191.txt, usw.
- im LOG ist folgender Inhalt (Beispielzeile): Jobdescription#Datenbankwartung

Was soll passieren:

Die Werte der LOGs (z.B. Jobdescription) sollen nun EINZELN als echo an eine Monitoringlösung übergeben werden.
EINZELN bedeutet nicht mit einer for-Schleife eine nach der anderen in einem Job. Sondern der Wert des ältestens LOG-Files, dann sofort Ende.

Folgende Kriterien sollen per Batch abgefragt werden:
- liste alle LOGs auf ('dir /-D /B /O-D LOG*.txt')
- aus dieser Liste durchsuche alle LOGs nach einem bestimmten Eintrag (findstr /M /C:Datenbankwartung LOG*.txt)
- aus dieser Liste suche mir das älteste LOG raus, das NICHT "TransferedDatenbankwartung" beinhaltet (fgrep -i TransferedDatenbankwartung -L LOG*.txt)
- gib den Wert Datenbankwartung per Batch aus (for /f "tokens=2 delims=#" %%i in ('type "%logfile%" ^| findstr /B Jobdescription') do echo %%i
- schreibe ans Ende dieser Datei nun TransferedJobdescription (@echo TransferedJobdescription>>%logfile%)

Damit erreiche ich, dass mir das älteste LOG, das NICHT TransferedBla enthält ausgelesen wird (echo-Ausgabe) und anschließend der TransferedBla reingeschrieben wird. Beim nächsten Turnus wird diese Datei nicht mehr angefasst, weil TransferedBla drin ist, es folgt die nächst älteste aus dem Sammelsorium der LOGs.


Nur wie lassen sich nun die Einzelnbausteine in einen batch schmeißen?
Wissende vor!


LG,

Markus.
Mitglied: bastla
14.04.2009 um 17:43 Uhr
Hallo InTreaTer!

Bis sich der nächste Guru hier einfindet könntest Du folgendes testen:
01.
@echo off & setlocal 
02.
set "Verz=D:\Logs" 
03.
set "Maske=Log*.txt" 
04.
set "Suche=Datenbankwartung" 
05.
set "Ausschluss=TransferredJobdescription" 
06.
 
07.
pushd "%Verz%" 
08.
set "Datei=" 
09.
for /f "delims=" %%i in ('dir /b /a-d /od "%Maske%"') do if not defined Datei findstr /c:"%Suche%" "%%i">nul && findstr /c:"%Ausschluss%" "%%i">nul || set "Datei=%%i" 
10.
if defined Datei ( 
11.
    for /f "tokens=2 delims=#" %%i in ('findstr /B "Jobdescription" "%Datei%"') do echo %%i 
12.
    echo %Ausschluss%>>"%Datei%" 
13.
14.
popd
Grüße
bastla

[Edit] Ausgabe der "Jobdescription" nachgereicht [/Edit]
[Edit2] Verwendung der Variablen %Ausschluss% in Zeile 12 und Rechtschreibkorrektur des Inhaltes dieser Variablen in Zeile 5 [/Edit2]
Bitte warten ..
Mitglied: Biber
14.04.2009 um 19:08 Uhr
<OT>
Moin inTreaTer,

keinerlei inhaltliche Ergänzungen, aber (weil es so im Auge brennt beim Lesen):
  • deutsch-denglische Wortgebilde wie "TransferedDatenbankwartung" sind ja schon Highlights (oder wie ihr sagen würdet "Highlichter"), mit denen jeder Jobvermittler Appetit auf einen unserer Arbeitsplätze machen könnte
  • aber der professional tatsch, wie der Dengländer es bezeichnet, geht absolut verloren, wenn dort immer TransferedBla statt TransferredBla steht.

Zumindest dort in Zeile 12 , wo bastla es ja jetzt neu schreibt könnte doch Beginn einer sanften Korrektur werden.

Liest sich ja sonst wie "Farad Valai"
( beabsichtlgter Werbegag-Rechtschreibfehler eines Fahrrad-Verleihs, gesehen in Nordhessen)

</OT>

Grüße
Biber
Bitte warten ..
Mitglied: bastla
14.04.2009 um 19:30 Uhr
@Biber
Schuldig im Sinne der Anklage - das fehlende "r" habe ich tatsächlich beim Kopieren übersehen, und in Zeile 12 muss natürlich die Variable hin - ist oben geändert ...

Grüße
bastla
Bitte warten ..
Mitglied: InTreaTer
15.04.2009 um 18:20 Uhr
Hallo Bastla,
hallo Biber!

Vielen Dank erstmal an dich, Bastla, für dein Skript.
Es funktioniert leider nur nicht ganz.
Er schnappt sich immer die letzte Datei, ignoriert die Variable Suche.

@Biber
hast natürlich recht. Bin da in den ersten Zügen eines Skripts nur nicht so penibel.
Sobald es fertig ist, überarbeite ich es eigentlich immer mit Kommentaren und durchgängiger Sprache,...


Jetzt habe ich aber doch einen riesen Fehler gemacht. Das Skript bringt mich nicht dahin, wo ich hin muss.
Ich formuliere das mal aus.


Wie beschrieben habe ich mehrere Dateien mit folgendem Aufbau:

Beispiel1
LOG-file for the Backup Exec-job:
Jobdescription# Datenbankwartung
StartDT#16.03.2009, 03:00:00
EndeDT#16.03.2009, 03:00:07
Result#0


Beispiel2
LOG-file for the Backup Exec-job:
Jobdescription# Backup_Tagessicherung_Mo-Do
StartDT#13.04.2009, 23:00:03
EndeDT#14.04.2009, 00:26:06
Result#1
JobError# 0xe00084ec - Ein Lese-/Schreibfehler trat auf. Dies ist in der Regel auf schmutzige Lese-/Schreibköpfe im Medienlaufwerk zurückzuführen. Reinigen Sie das Medienlaufwerk und wiederholen Sie den Auftrag. Besteht das Problem anschließend weiterhin, verwenden Sie ein anderes Medium. Möglicherweise kann der Fehler auch durch Probleme mit Kabeln, Terminierung oder anderer Hardware verursacht werden.
ErrorCategory# Sicherungsmedienfehler
ErrorInfo#http://eventlookup.veritas.com/eventlookup/EventLookup.jhtml?EvtID=V-79 ...


Nun werden über die Monitoringlösung diverse Batchjobs direkt am Server abgefeuert, die die unterschiedlichen Werte (Jobdescription, StartDT, EndDT, usw.) abfragen und in die entsprechenden Datenbanktabellen eintragen.
Das Skript, das Bastla bereitgestellt hat schreibt nach dem ersten Auslesen (z.B. Jobdescription) den Transferred in die Datei und ändert damit das geändert-Datum.
Folge: der zweite Batch, der in gleicher Weise StartDT ausliest wird nun natürlich diese Datei NICHT mehr anfassen bzw. deutlich später, da das geändert-Datum nicht dem Originalen entspricht.
Meine Idee wäre, die Transferred-Werte aller Einträge in eine separate txt-Datei zu schreiben. Damit würde die originale Datei nicht geändert.

Habt ihr eine Idee (und ein Skript?).


Vielen Dank für eure Hilfe!


LG,

Markus.
Bitte warten ..
Mitglied: bastla
16.04.2009 um 01:16 Uhr
Hallo InTreaTer!

Zunächst nur eine Nachbesserung meines obigen Scripts - da fehlten in Zeile 9 einige Klammern. So sollte es funktionieren:
for /f "delims=" %%i in ('dir /b /a-d /od "%Maske%"') do if not defined Datei (findstr /c:"%Suche%" "%%i">nul && (findstr /c:"%Ausschluss%" "%%i">nul || set "Datei=%%i" ))
Grüße
bastla

P.S.: Für mehr ist es heute schon zu spät (bzw noch zu früh ) ...
Bitte warten ..
Mitglied: InTreaTer
16.04.2009 um 16:20 Uhr
Hallo ihr beiden!

Ich habe nun noch etwas nachgefeilt und nun tut es, was es soll
Anbei der letzte Stand zum Abschluss des Projektes.

Mit dem touch-Befehl halte ich mir das Problem des geändert-Datums vom Hals. Ich setze einfach nach "getaner Arbeit" das Datum wieder auf das ursprüngliche (der Referenzdatei).

Herzlichen Dank an Basla für deine Skriptunterstützung!

@echo off & setlocal
set "ReferenceLogFolder=C:\Programme\Symantec\Backup Exec\Data"
set "Logfolder=D:\EDV\LOG\Symantec"
set "Filestring=BEX*.txt"
set "Jobname=%1"
set "Jobstring=%2"

if not defined Jobname @echo Jobname (f.e. Backup weekly) not defined, please check your settings && goto EOF
if not defined Jobstring @echo Jobstring (f.e. Jobdescription) not defined, please check your settings && goto EOF
if not exist "%ReferenceLogFolder%" @echo %ReferenceLogFolder% does not exist, please check your settings && goto EOF
if not exist "%Logfolder%" @echo %Logfolder% does not exist, please check your settings && goto EOF

pushd "%Logfolder%"
set "Filename="
for /f "delims=" %%i in ('dir /b /a-d /od "%Filestring%"') do if not defined Filename (findstr /c:"%Jobname%" "%%i">nul && (findstr /c:"Transferred%Jobstring%" "%%i">nul || set "Filename=%%i" ))
if defined Filename (
for /f "tokens=2 delims=#" %%i in ('findstr /B "%Jobstring%" "%Filename%"') do @echo %%i
echo Transferred%Jobstring%>>"%Filename%"
)

for /f "tokens=1 delims=." %%i in ('echo %Filename%') do set XMLFile=%%i

touch -r, --reference="%ReferenceLogFolder%\%XMLFile%.xml" "%Filename%"
popd

:EOF



LG,

Markus.
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Verschachtelte FOR-Schleife mit einem Argument
gelöst Frage von mp-homeBatch & Shell3 Kommentare

Hallo Forum, ich versuche mehrere FOR-Schleifen in eine verschachtelte FOR-Schleife zu ändern. Leider scheine ich zu doof für dieses ...

Batch & Shell
Verschachtelte For Schleife für Batch Neuling
Frage von yperiuBatch & Shell3 Kommentare

Hallo liebe Profis, ich habe eine sehr umfangreiche Benchmark-Schleife zum Laufen zu bringen, die ich ohne For 72 mal ...

Batch & Shell
In einer verschachtelten For-Schleife Ping info auslesen
gelöst Frage von Tommy-TyrolBatch & Shell4 Kommentare

Hallo allerseits, quäle mich seit einiger Zeit mit folgendem Problem. In einer Textdatei (ipfil.txt) stehen IP-Adressen von rechnern welche ...

Batch & Shell
Batchfile MSDOS - Berechnung in verschachtelter FOR-Schleife
gelöst Frage von KlimatorBatch & Shell3 Kommentare

Hallo zusammen, ich möchte in einer dreifach verschachtelten FOR-Schleife eine Berechnung auf Grundlage der drei hochgezählten Variablen vornehmen, doch ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Necur-Botnet soll Erpressungstrojaner Scarab massenhaft verbreiten

Information von BassFishFox vor 12 StundenErkennung und -Abwehr

12,5 Millionen Spam-Mails aus einem Bot-Netz mit 6 Millionen Computern? Eigentlich eine schwache Leistung. Die Erpresser setzen dabei auf ...

Microsoft

Nadeldrucker-Problem unter Windows - Microsoft liefert Updates

Information von BassFishFox vor 12 StundenMicrosoft

Hat ja nicht lange gedauert. Nachdem die November-Updates für Windows 7, 8.1 und 10 zahlreiche Nadeldrucker lahmgelegt hatten, stellt ...

Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 20 StundenLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Heiß diskutierte Inhalte
Windows Server
Kann man im KMS nachschauen , wieviele Clients den Key in Anspruch genommen haben
gelöst Frage von rainergugusWindows Server15 Kommentare

Hallo, wir haben einen KMS Windows 10 Key. Dieser ist ja W7 kompatibel. Aber unser Windows 7 Pool registriert ...

Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux14 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...