Liste von Feldwerten erstellen und kombinieren
Hallo,
habe eine HTML Datei (pdir.htm) die eine Tabelle mit vielen Zellwerten enthält. Dabei sollen die namen der eingabefelder ermittelt, aufgelistet werden.
Ausgabe soll eine Liste mit den Feldnamen von oben.
Nun sollen den Feldnamen diese Values zugeordnet werden.
Nun sollen den Feldnamen und Values zusammengefügt werden.
Nun soll das ganze in diese Ausgabe umgewandelt werden und so aussehen
in ShellScript habe ich zumindest eine Zellenliste mit diesem code bekommen (Ausgabe ...17006=0 u.s.w...).
cat pdir.htm |grep name|grep value|cut -d '"' -f6,14|sed s/\"/\ /|xargs -n1 echo|sed s/$/=0/
Kann man das ganze mit einer cmd datei lösen eventuell mit Findstr, Type? Ich benötige eine cmd-Datei oder vbs-Datei. Ich benötige das script auf einem Windows-Rechner
Vielen Dank für Hilfe und evtl Denkansätze
habe eine HTML Datei (pdir.htm) die eine Tabelle mit vielen Zellwerten enthält. Dabei sollen die namen der eingabefelder ermittelt, aufgelistet werden.
...
<tr bgcolor=#d3d3d3><td>1.<td> <input class="inputc" size="40" name="17006" value="" maxlength=2047><td>2.<td> <input class="inputc" size="40" name="16942" value="" maxlength=2047>
<tr bgcolor=#dcdcdc><td>3.<td> <input class="inputw" size="40" name="17134" value="" maxlength=2047><td>4.<td> <input class="inputw" size="40" name="17070" value="" maxlength=2047>
<tr bgcolor=#d3d3d3><td>5.<td> <input class="inputc" size="40" name="17262" value="" maxlength=2047><td>6.<td> <input class="inputc" size="40" name="17198" value="" maxlength=2047>
<tr bgcolor=#dcdcdc><td>7.<td> <input class="inputw" size="40" name="17390" value="" maxlength=2047><td>8.<td> <input class="inputw" size="40" name="17326" value="" maxlength=2047>
...
17006
16942
17134
17070
17262
17198
17390
17326
Eintrag1
Eintrag2
Eintrag3
Eintrag4
Eintrag5
Eintrag6
Eintrag7
Eintrag8
17006=Eintrag1
16942=Eintrag2
17134=Eintrag3
17070=Eintrag4
17262=Eintrag5
17198=Eintrag6
17390=Eintrag7
17326=Eintrag8
...
<tr bgcolor=#d3d3d3><td>1.<td> <input class="inputc" size="40" name="17006" value="Eintrag1" maxlength=2047><td>2.<td> <input class="inputc" size="40" name="16942" value="Eintrag2" maxlength=2047>
<tr bgcolor=#dcdcdc><td>3.<td> <input class="inputw" size="40" name="17134" value="Eintrag3" maxlength=2047><td>4.<td> <input class="inputw" size="40" name="17070" value="Eintrag4" maxlength=2047>
<tr bgcolor=#d3d3d3><td>5.<td> <input class="inputc" size="40" name="17262" value="Eintrag5" maxlength=2047><td>6.<td> <input class="inputc" size="40" name="17198" value="Eintrag6" maxlength=2047>
<tr bgcolor=#dcdcdc><td>7.<td> <input class="inputw" size="40" name="17390" value="Eintrag7" maxlength=2047><td>8.<td> <input class="inputw" size="40" name="17326" value="Eintrag8" maxlength=2047>
...
cat pdir.htm |grep name|grep value|cut -d '"' -f6,14|sed s/\"/\ /|xargs -n1 echo|sed s/$/=0/
Kann man das ganze mit einer cmd datei lösen eventuell mit Findstr, Type? Ich benötige eine cmd-Datei oder vbs-Datei. Ich benötige das script auf einem Windows-Rechner
Vielen Dank für Hilfe und evtl Denkansätze
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 182830
Url: https://administrator.de/contentid/182830
Ausgedruckt am: 05.11.2024 um 19:11 Uhr
1 Kommentar
Hallo dasgute!
Sollte das wirklich so gemeint sein, dass "Eintrag1" sich aus dem konstanten Text "Eintrag" und der variablen Nummer lt
ergeben soll, könnte das per VBS etwa so gehen:
Übrigens: "sed" gibt es auch für Windows ...
Falls das eher so gedacht wäre, dass tatsächlich eine Zwischendatei (in meinem Beispiel unten "Zuordnung.txt") mit den Feldnamen erstellt werden soll, die dann manuell mit den Einträgen ergänzt wird, dann etwa so:
und
Noch als Hinweis zu beiden Ansätzen: Wenn die Originaldatei überschrieben werden soll, einfach nur jeweils anstelle von "
Grüße
bastla
Sollte das wirklich so gemeint sein, dass "Eintrag1" sich aus dem konstanten Text "Eintrag" und der variablen Nummer lt
<td>1.<td>
Ein = "D:\pdir.htm"
Aus = "D:\pdir_new.htm"
Set fso = CreateObject("Scripting.FileSystemObject")
Set rE = New RegExp
rE.Global = True
rE.Pattern = "<td>(\d)\.<td> <input class=""input(.)"" size=""40"" name=""(\d{5})"" value="""" maxlength=2047>"
T = fso.OpenTextFile(Ein).ReadAll
fso.CreateTextFile(Aus).Write rE.Replace(T, "<td>$1.<td> <input class=""input$2"" size=""40"" name=""$3"" value=""Eintrag$1"" maxlength=2047>")
Falls das eher so gedacht wäre, dass tatsächlich eine Zwischendatei (in meinem Beispiel unten "Zuordnung.txt") mit den Feldnamen erstellt werden soll, die dann manuell mit den Einträgen ergänzt wird, dann etwa so:
'MakeList.vbs
Ein = "D:\pdir.htm"
Aus = "D:\Zuordnung.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set rE = New RegExp
rE.Global = True
rE.Pattern = "<td>(\d)\.<td> <input class=""input(.)"" size=""40"" name=""(\d{5})"" value="""" maxlength=2047>" 'von oben übernommen; ließe sich vermutlich auch gefahrlos noch kürzen
T = fso.OpenTextFile(Ein).ReadAll
Set A = fso.CreateTextFile(Aus)
Set Matches = rE.Execute(T)
For Each Match In Matches
A.WriteLine Match.SubMatches(2) & "="
Next
'ReplaceByList.vbs
Ein = "D:\pdir.htm"
Aus = "D:\pdir_new.htm"
Liste = "Zuordnung.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
T = fso.OpenTextFile(Ein).ReadAll
L = Split(fso.OpenTextFile(Liste).ReadAll, vbCrLf)
For Each Zuordnung In L
If InStr(Zuordnung, "=") > 0 Then
Feld = Split(Zuordnung, "=")(0)
Wert = Split(Zuordnung, "=")(1)
T = Replace(T, "name=""" & Feld & """ value=""""", "name=""" & Feld & """ value=""" & Wert & """")
End If
Next
fso.CreateTextFile(Aus).Write T
Noch als Hinweis zu beiden Ansätzen: Wenn die Originaldatei überschrieben werden soll, einfach nur jeweils anstelle von "
CreateTextFile(Aus)
" "CreateTextFile(Ein)
" verwenden ...Grüße
bastla