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, 3624 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

Text von zeile mit wort, bis ziele mit wort

gelöst Frage von SaintwolfBatch & Shell5 Kommentare

suche eine Batch die eine txt auswertet inhalt: text a text b text c Fehler fehler in KB4568792 text ...

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 ...

Neue Wissensbeiträge
Vmware
VMware Update für den ESXi 5.5 verfügbar
Information von sabines vor 22 StundenVmware

Nach dem ganzen Hickhack um Update mit Microcode Anpassungen und Rückzug, gibt es nun für den ESXi 5.5 ein ...

CPU, RAM, Mainboards

Meltdown und Spectre: Intel zieht Microcode-Updates für Prozessoren zurück

Information von keine-ahnung vor 1 TagCPU, RAM, Mainboards6 Kommentare

Moin, extrem lutztig. Nur gut, dass ich noch nicht beim Probanden-Bingo mitgemacht habe :-) LG, Thomas

Router & Routing
PfSense als Addon auf QNAP
Information von magicteddy vor 1 TagRouter & Routing7 Kommentare

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 TagDatenschutz1 Kommentar

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement26 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Server
TEMP-Profile
gelöst Frage von Forseti2003Windows Server21 Kommentare

Guten Morgen, wer kennt sie nicht, die lieben Temporären Benutzerprofile, vorallem immer dann, wenn man sie am wenigsten braucht. ...

LAN, WAN, Wireless
100m+ Leitungslänge Ethernet
gelöst Frage von Ex0r2k16LAN, WAN, Wireless16 Kommentare

Guten Morgen zusammen, ich habe eine Netzwerkdose die die 100m Leitungslänge bis zum Switch knackt. Damit die Verbindung einigermaßen ...

Multimedia & Zubehör
Welches Tablet für die Verkäufer?
Frage von Hendrik2586Multimedia & Zubehör16 Kommentare

Guten Morgen meine Lieben, vielleicht könnt ihr mir ja helfen. Es geht um unsere Außendienstmitarbeiter /Verkäufer. Sie sollen demnächst ...