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, 5272 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
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ä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
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...

Windows Server
RODC über VPN - Verbindung weg (10)

Frage von stefan2k1 zum Thema Windows Server ...