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, 5283 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Batch: Textdatei Zeilenweise auslesen (2)

Frage von CreatorX zum Thema Batch & Shell ...

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

Frage von Manuel1234 zum Thema Batch & Shell ...

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

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Neue Wissensbeiträge
Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(4)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Heiß diskutierte Inhalte
Exchange Server
Exchange 2016 Standard Server 2012 R2 Hetzner Mail (41)

Frage von Datsspeed zum Thema Exchange Server ...

Windows 7
gelöst Lokales Adminprofil defekt (25)

Frage von Yannosch zum Thema Windows 7 ...

Off Topic
gelöst Fachzeitschriften als E-Book oder hardcoded? (11)

Frage von KowaKowalski zum Thema Off Topic ...

Windows 10
Windows Store Apps ohne Windows Store installieren (10)

Frage von keefien zum Thema Windows 10 ...