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 Nach Wörtern in Datei suchen, die nächsten 4 Zeilen speichern und mit den Werten rechnen.

Mitglied: kleineschaufel

kleineschaufel (Level 1) - Jetzt verbinden

19.10.2010 um 13:21 Uhr, 3634 Aufrufe, 8 Kommentare

Hallo, ich bin neu hier und versuche mir hier einige tricks und kniffe anzueignen

Hallo, ich hoffe ihr könnt mir weiterhelfen...

Also ich habe eine Datei "C:\test.html" in dieser Datei ist eine html-tabelle. Nun möchte ich gerne nach Werten suchen. Z.B. nach "Zeitwert1" das mache ich wie folgt:
01.
findstr /n /c:"Zeitwert1" "C:\test.html"
das ergebnis ist dann z.B. so:
190:Zeitwert1<TD>
400:Zeitwert1<TD>
610:Zeitwert1<TD>

Nun brauch ich aber immer noch 2 Werte zu jeder Zeile unzwar, wenn "Zeitwert1" in Zeile 190 gefunden wurde, brauche ich den Wert der in Zeile 192 und 194 steht.
Da sind dann 2 Zahlenwerte die ich von einander subtrahieren muss. Die Zeilen sehen so aus:
192: "20:06:21</TD>"
194: "20:06:27</TD>"
Also müsste das "</TD>" auch noch entfernt werden.

Zu guter letzt würde ich das ergebnis in eine neue HTML datei schreiben lassen.
Ist mein vorhaben überhaupt mit batch möglich?

MfG
patrick
Mitglied: bastla
19.10.2010 um 13:32 Uhr
Hallo kleineschaufel und willkommen im Forum!
Ist mein vorhaben überhaupt mit batch möglich?
Möglich ja ("... alles außer Brotschneiden ..." ), sinnvoller (nicht zuletzt wegen der Zeitberechnung) aber per zB VBScript ...

[Edit] ... das (korrekten Inhalt der "test.html"-Datei voraussetzend) etwa so aussehen könnte (die Ausgabe beschränkt sich mangels Beschreibung der gewünschten HTML-Datei auf die reinen Zeitdifferenzen):
01.
Datei = "C:\test.html" 
02.
Such = "Zeitwert1" 
03.
 
04.
Set fso = CreateObject("Scripting.FileSystemObject") 
05.
Zeilen = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLf)'alle Zeilen in Array einlesen 
06.
MaxZeilen = UBound(Zeilen) 'höchsten Array-Index ermitteln 
07.
For i = 0 To MaxZeilen 'alle Zeilen des Array durchgehen 
08.
    If InStr(Zeilen(i), Such) > 0 Then 'Suchbegriff in Zeile enthalten? 
09.
        If i + 4 <= MaxZeilen Then 'Gibt es noch genügend Zeilen, um Zeit2 auslesen zu können? 
10.
            'Zeile anhand "<" zerlegen, im Teil vor dem ersten "<" 
11.
            'Anführungszeichen eliminieren und einen in einen Zeitwert umwandeln 
12.
            Zeit1 = CDate(Replace(Split(Zeilen(i + 2), "<")(0), """", "")) 
13.
            Zeit2 = CDate(Replace(Split(Zeilen(i + 4), "<")(0), """", "")) 
14.
            Diff = Zeit2 - Zeit1 'Differenz der beiden Zeiten ermitteln 
15.
            If Diff < 0 Then Diff = Diff + 1 'Tageswechsel ausgleichen 
16.
            'Zeitdifferenz (mit Zeilenumbruch vorweg) formatiert der Ausgabe hinzufügen 
17.
            Ausgabe = Ausgabe & vbCrLf & FormatDateTime(Diff, vbLongTime) 
18.
        End If 
19.
    End If 
20.
Next 
21.
WScript.Echo Mid(Ausgabe, 3) 'Ausgabe ohne ersten Zeilenumbruch (=Leerzeile) anzeigen
[/Edit]
Grüße
bastla
Bitte warten ..
Mitglied: Friemler
19.10.2010 um 17:44 Uhr
Hallo Patrick,

Zitat von bastla:
... sinnvoller (nicht zuletzt wegen der Zeitberechnung) aber per zB VBScript ...

ich probiere es mal mit einem Mix aus Batch und VBScript.

01.
@echo off 
02.
 
03.
setlocal 
04.
 
05.
 
06.
set "SearchFile=C:\test.html" 
07.
set "VBSCode=%TEMP%\TimeDiff.vbs" 
08.
 
09.
(echo Set listArgs=WScript.Arguments 
10.
 echo If listArgs.Count = 2 Then 
11.
 echo   WScript.Quit DateDiff^("s",listArgs^(0^),listArgs^(1^)^) 
12.
 echo Else 
13.
 echo   WScript.Quit 0 
14.
 echo End If 
15.
) > "%VBSCode%" 
16.
 
17.
for /f "delims=:" %%n in ('findstr /n /c:"Zeitwert1" "%SearchFile%"') do ( 
18.
  set /a "lineNumber1=%%n+1" 
19.
  set /a "lineNumber2=%%n+3" 
20.
  call :ProcessLine 
21.
22.
 
23.
del "%VBSCode%" 
24.
 
25.
exit /b 
26.
 
27.
 
28.
:ProcessLine 
29.
  for /f "delims=< " %%a in ('more +%lineNumber1% "%SearchFile%"') do ( 
30.
    set "timestamp1=%%a" 
31.
    goto NextLine 
32.
33.
 
34.
  :NextLine 
35.
  for /f "delims=< " %%a in ('more +%lineNumber2% "%SearchFile%"') do ( 
36.
    set "timestamp2=%%a" 
37.
    goto Output 
38.
39.
 
40.
  :Output 
41.
  cscript /nologo "%VBSCode%" "%timestamp1:~1%" "%timestamp2:~1%" 
42.
  echo Zeitdifferenz: %ERRORLEVEL%s 
43.
exit /b
In den Zeilen 9-15 wird ein temporäres VBScript erzeugt, das die Zeitdifferenz zwischen zwei als Parametern übergebenen Uhrzeiten in Sekunden berechnen kann und das Ergebnis an das aufrufende Batchfile zurück gibt. Im Batchfile ist dieses Ergebnis über die Variable ERRORLEVEL erreichbar.

In der FOR-Schleife in Zeile 17-21 wird nach dem String "Zeitwert1" gesucht. Die Nummer der Zeile steht in der Laufvariablen %%n. Daraus wird die Anzahl Zeilen errechnet, die beim Auslesen von Uhrzeit 1 und Uhrzeit 2 vom Anfang von test.html aus übersprungen werden müssen, um als erste Zeile genau die Zeile mit der entsprechenden Uhrzeit auszugeben.

Das Auslesen wird im Unterprogramm ProcessLine erledigt. MORE +X "Dateiname" ließt die Datei "Dateiname" aus und überspringt dabei X Zeilen vom Anfang der Datei. Die Laufvariable %%a der beiden FOR-Schleifen enthält die gewünschte Uhrzeit mit einem vorangestellten Anführungszeichen. Nach dem ersten Durchlauf der FOR-Schleife (also nach dem Verarbeiten der ersten Ausgabe-Zeile) wird durch die GOTO-Befehle in Zeile 31 bzw. 37 die Schleife abgebrochen.

Beim Aufruf des VBScripts werden die Uhrzeit-Strings erst ab dem 2. Zeichen (Offset 1) bis zu ihrem Ende übergeben (wegen dem vorangestellten Anführungszeichen).

Voraussetzung für eine korrekte Funktion ist, das der angegebene Aufbau der Zeilen mit den Uhrzeiten in test.html stimmt.

[Edit]
Mist, schon wieder zu langsam

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
19.10.2010 um 17:50 Uhr
Hallo Friemler!

Da ich mich nicht traue, meine Batches aus Schleifen springen zu lassen (auch wenn's Performancevorteile bringt), würde ich die Zeilen 29 bis 32 durch
01.
set "timestamp1=" 
02.
for /f "delims=< " %%a in ('more +%lineNumber1% "%SearchFile%"') do if not defined timestamp1 set "timestamp1=%%a"
ersetzen oder alternativ ein "findstr" für die gesuchte Zeilennummer durchführen ...

Grüße
bastla
Bitte warten ..
Mitglied: Friemler
19.10.2010 um 17:52 Uhr
[OT]
Hallo bastla,

was könnte denn bei meiner Lösung passieren?

Gruß
Friemler
[/OT]
Bitte warten ..
Mitglied: bastla
19.10.2010 um 17:55 Uhr
Hallo Friemler!
was könnte denn bei meiner Lösung passieren?
Genau das ist mein Problem: ich weiß es nicht ...

Grüße
bastla

P.S.: Als Optimierung würde sich für Zeile 41 (im Vertrauen auf das am Anfang der Variablen stehende Anführungszeichen)
cscript /nologo "%VBSCode%" %timestamp1%" %timestamp2%"
anbieten ...
Bitte warten ..
Mitglied: Friemler
19.10.2010 um 18:00 Uhr
Hallo Bastla,

Zitat von bastla:
P.S.: Als Optimierung würde sich für Zeile 41 (im Vertrauen auf das am Anfang der Variablen stehende
Anführungszeichen) ... anbieten

Pfennigfuchser

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
19.10.2010 um 18:17 Uhr
[OT]
Hallo Friemler!
Pfennigfuchser
... auch dem Begriff "Spielkind" könnte ich nicht glaubhaft widersprechen

Grüße
bastla
[/OT]
Bitte warten ..
Mitglied: kleineschaufel
20.10.2010 um 09:31 Uhr
Hui
Da habt ihr ja nen ganz schönes ding rausgehaun...damit kann ich gut weiterarbeiten
Ihr habt meinen Tag gerettet ;)
vielendank
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Werte aus Spalten in Zeilen suchen und zweiten Wert zuordnen

Frage von frosch44Microsoft Office1 Kommentar

Guten Morgen, hier ist der Aprilscherzmacher :-) Heute suche ich folgende Lösung: Ich habe Spalte A mit Daten und ...

Batch & Shell

Wert in Registry suchen und in Variable speichern

Frage von J.TrollBatch & Shell2 Kommentare

Hi Liebes Form Ich hab ein Problem mit einem denke ich recht einfachen Programmteil. Vielleicht kann mir jemand von ...

Batch & Shell

Wert in einer TXT Datei suchen

Frage von nolle99Batch & Shell11 Kommentare

Hallo Leute Ich habe ein Problem Ich habe mir von meiner Seite alle URLs in einer TXT gespeichert (30.000 ...

Batch & Shell

Einen Wert manuell eingeben und in einer Datei ein bestimmtest Wort ändern

gelöst Frage von ThunderSmileBatch & Shell2 Kommentare

Hallo Zusammen, ich hoffe ihr könnt mir helfen. Ich würde gerne ein Skript schreiben, dass folgendes kann: - Überprüfung ...

Neue Wissensbeiträge
Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 4 StundenWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 14 StundenSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 14 StundenMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 14 StundenHardware11 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

Heiß diskutierte Inhalte
Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux23 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL18 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...

LAN, WAN, Wireless
Kommunikation zwischen verschiedenen IP-Bereichen
Frage von DirkHoLAN, WAN, Wireless13 Kommentare

Hallo zusammen, von Unitymedia habe ich ein neues Modem (Connect Box) erhalten, das u.a. IPv4 aber keinen Bridge Mode ...

Windows Server
Domänencontroller trennen
Frage von Akit57Windows Server13 Kommentare

Hallo, ich hoffe das mir hier jemand meine Frage trotz der spärlichen Informationen die ich geben kann beantworten kann: ...