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

Batch - Textdatei auslesen - Datensätze weglassen

Frage Entwicklung Batch & Shell

Mitglied: 64903

64903 (Level 1)

19.05.2008, aktualisiert 16:15 Uhr, 5277 Aufrufe, 4 Kommentare

Hallo Leute,

ich habe eine Textdatei erzeugt, die alle "Geplanten Tasks" mit folgenden Infos enthält:

HostName: Server1
TaskName: BP_ALL_RESTART
Last Run Time: 04:30:00, 10.04.2008
Last Result: 0
Task To Run: D:\restart_all.bat
Scheduled Task State: Enabled

Nun möchte ich gerne alle "Datensätze" rausfiltern, wo:
1) "Last Result" ungleich 0
2) "Scheduled Task State" gleich Enabled
Das Ergebnis kommt in eine neue Textdatei.

Keine Ahnung, ob das überhaupt mit einer Batchdatei möglich ist, aber vielleicht hat ja
jemand eine Idee.

Gruss
Oliver
Mitglied: 60730
19.05.2008 um 11:32 Uhr
Servus,

am einfachsten ist es - wenn alle Infos zu einem Task in einer Zeile stehen (per komma getrennt wäre ideal)

Dann reicht ein einfaches
findstr Wert Dateiname
Bitte warten ..
Mitglied: 64903
19.05.2008 um 12:13 Uhr
Servus,

am einfachsten ist es - wenn alle Infos zu einem Task in einer Zeile stehen (per komma
getrennt wäre ideal)

Ja, genau das ist ja mein Problem. Wenn alles in einer Zeile wäre, hätte ich es mir "find" gemacht.
Leider bekomme ich die Daten nur in der Form.

Gruss
Oliver
Bitte warten ..
Mitglied: bastla
19.05.2008 um 14:31 Uhr
Hallo Olli1234 und TimoBeil!

Einen "echten" Datensatz daraus zu machen, war auch meine erste Idee. Unter der Annahme, dass jeder Satz mit "HostName:" beginnt (festgelegt in %Header%), könnte der Batch so aussehen:
01.
@echo off & setlocal 
02.
set "Liste=D:\Tasks.txt" 
03.
set "Erg=D:\Ergebnis.txt" 
04.
 
05.
set "Header=HostName:" 
06.
set "Delim=;" 
07.
set Check1=/v /c:"Last Result: 0" 
08.
set Check2=/c:"Scheduled Task State: Enabled" 
09.
 
10.
if exist "%Erg%" del "%Erg%" 
11.
set Datensatz= 
12.
for /f "usebackq delims=" %%i in ("%Liste%") do call :ProcessLine "%%i" 
13.
echo %Datensatz%|findstr %Check1%|findstr %Check2%>nul && call :Ausgabe "%Datensatz%" 
14.
::echo %Datensatz%|findstr %Check1%|findstr %Check2%>nul && >>"%Erg%" echo %Datensatz% 
15.
 
16.
goto :eof 
17.
 
18.
:ProcessLine 
19.
echo %~1|findstr /b /c:"%Header%">nul || goto :Feld 
20.
 
21.
echo %Datensatz%|findstr %Check1%|findstr %Check2%>nul && call :Ausgabe "%Datensatz%" 
22.
::echo %Datensatz%|findstr %Check1%|findstr %Check2%>nul && >>"%Erg%" echo %Datensatz% 
23.
 
24.
set "Datensatz=%~1" 
25.
goto :eof 
26.
 
27.
:Feld 
28.
set "Datensatz=%Datensatz%;%~1" 
29.
goto :eof 
30.
 
31.
:Ausgabe 
32.
for /f "tokens=1-6 delims=%Delim%" %%a in (%1) do ( 
33.
    echo %%a 
34.
    echo %%b 
35.
    echo %%c 
36.
    echo %%d 
37.
    echo %%e 
38.
    echo %%f 
39.
    echo\ 
40.
)>>"%Erg%"  
41.
goto :eof
Für die Ausgabe gibt es zwei Varianten: entweder die gleiche Aufteilung wie in der Ausgangsdatei (Ergebnis: 6 Datenzeilen + von mir eingefügte Leerzeile) oder (derzeit auskommentiert) Ausgabe als Datensatz in einer Zeile, getrennt durch das mit "set Delim=" angegebene Trennzeichen.

Grüße
bastla
Bitte warten ..
Mitglied: 64903
19.05.2008 um 16:15 Uhr
Hi bastla,

absolut genial!!
Dein Code funktioniert perfekt! Daumen hoch!!

set Check1=/v /c:"Last Result: 0"
set Check2=/c:"Scheduled Task State: Enabled"

Es gab nur eine Kleinigkeit, da zwischen dem "Last Result:" und der "0" einige Leerzeichen sind.
Das hatte ich zwar auch so gepostet, die wurden aber wohl rausgeschnitten
Bei der 2. Abfrage gab es das gleiche Problemchen.

Die Batch ist jetzt jedenfalls komplett eingebunden und wird nun jeden Morgen durchlaufen!
Benötigt habe ich die erste Variante.
Danke für deine Hilfe!!

Gruss
Oliver
Bitte warten ..
Neuester Wissensbeitrag
Exchange Server

WSUS bietet CU22 für Exchange 2007 SP3 nicht an. EOL Exchange 2007

Tipp von DerWoWusste zum Thema Exchange Server ...

Ähnliche Inhalte
Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Batch & Shell
Per Batch Textdatei Spaltenweise auslesen nochmal weil ich dumm bin (9)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
Batch Textdatei Spaltenweise auslesen (7)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst Batch xls nach aktuellem Datum auslesen und email senden (14)

Frage von michi-ffm zum Thema Batch & Shell ...

Backup
Datensicherung ARCHIV (12)

Frage von fautec56 zum Thema Backup ...

LAN, WAN, Wireless
Per Script auf UniFi-controller zugreifen und WPA2-Key ändern (11)

Frage von Winfried-HH zum Thema LAN, WAN, Wireless ...

Exchange Server
gelöst DHCP Sever MS Server 2012 Problem (10)

Frage von Florian86 zum Thema Exchange Server ...