Problem mit Vb script beim suchen und speichern von bestimmten Abschnitt aus Textdatei
Hi,
ich beschäftige mich nun seit ca. einer Woche mit VB Script. Bin also ein ziemlicher Anfänger und wollte aus einer Textdatei einen bestimmten Abschnitt in einer neuen textdatei speichern.
Nun habe ich mir nach dem durchlesen vers. Tutorials udn Foren ein Vb Script zusammen bebaut. Doch dieses Funktioniert nicht.
Hier ist das script
Ich habe versucht den Abschnitt zwischen PROE_FLEX3C und PROE_FundationAdv versucht in einer neuen Textdatei zuspeichern.
Aber ich habe nur PROE-FLEX3c drinnen stehen.
Ich hoffe ihr könnt mir helfen.
Vielen Danke schon mal im Vorraus.
Mfg Dobihead
ich beschäftige mich nun seit ca. einer Woche mit VB Script. Bin also ein ziemlicher Anfänger und wollte aus einer Textdatei einen bestimmten Abschnitt in einer neuen textdatei speichern.
Nun habe ich mir nach dem durchlesen vers. Tutorials udn Foren ein Vb Script zusammen bebaut. Doch dieses Funktioniert nicht.
Hier ist das script
Const forReading =1
dim test, test1, head
Set fso = createObject("Scripting.FileSystemObject")
Set ostream = fso.createTextfile("D:\PTC\proiclient3.4\bin\start\3C.txt", true)
Set lizDatei = fso.OpenTextFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt", forreading)
test = "abc"
do until test <> "PROE_FLEX3C"
lizdatei.skipline
test = lizdatei.readline
exit do
loop
head = "PROE 3C Lizenzen"
test1 = "cds"
do until test1 = "PROE_FundationAdv"
text = text + lizdatei.readline
test1 = lizdatei.readline
exit do
loop
oStream.WriteLine head
oStream.WriteLine text
lizdatei.close
ostream.close
Ich habe versucht den Abschnitt zwischen PROE_FLEX3C und PROE_FundationAdv versucht in einer neuen Textdatei zuspeichern.
Aber ich habe nur PROE-FLEX3c drinnen stehen.
Ich hoffe ihr könnt mir helfen.
Vielen Danke schon mal im Vorraus.
Mfg Dobihead
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 86123
Url: https://administrator.de/forum/problem-mit-vb-script-beim-suchen-und-speichern-von-bestimmten-abschnitt-aus-textdatei-86123.html
Ausgedruckt am: 05.02.2025 um 14:02 Uhr
14 Kommentare
Neuester Kommentar
salü!
lass ich deinen Scriptschnipsel durchlaufen, so krieg ich als output nur:
dies ist jedoch nicht weiter verwunderlich, da du keine saubere schleife eingebaut hast, welche das ganze file absucht! die folgenden codezeilen generieren diesen output und alles andere wird eigentlich gar nicht beachtet!
hier ein funktionierender scriptschnipsel von mir - kannst ja ma vergleichen und bei bedarf fragen stellen!
gruss tacker
lass ich deinen Scriptschnipsel durchlaufen, so krieg ich als output nur:
PROE 3C Lizenzen
"erste Zeile der lizakt.txt"
dies ist jedoch nicht weiter verwunderlich, da du keine saubere schleife eingebaut hast, welche das ganze file absucht! die folgenden codezeilen generieren diesen output und alles andere wird eigentlich gar nicht beachtet!
head = "PROE 3C Lizenzen" ' erste zeile die geschrieben wird
...
text = text + lizdatei.readline ' erste zeile die ausgelesen und niedergeschrieben wird
...
oStream.WriteLine head
oStream.WriteLine text
hier ein funktionierender scriptschnipsel von mir - kannst ja ma vergleichen und bei bedarf fragen stellen!
dim fso
set fso = createobject("Scripting.FileSystemobject")
Set ostream = fso.createTextfile("D:\PTC\proiclient3.4\bin\start\3C.txt", true)
Set lizDatei = fso.OpenTextFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt", 1)
ostream.writeline "PROE 3C Lizenzen"
do while not lizDatei.AtEndOfStream
line = lizdatei.readline()
If instr(line, "PROE_FLEX3C") > 0 then
line = lizdatei.readline()
do until instr(line, "PROE_FundationAdv") > 0
ostream.writeline line
line = lizdatei.readline()
Loop
End If
Loop
lizdatei.close
ostream.close
gruss tacker
... ganz unelegant, aber ausreichend wäre....
[Annahme: line ist "(xxxxxx@xxxxxxx) server adressen port usw...."]
-oder, nicht ganz so hölzern-
[...wie immer ungetestet]
Grüße
Biber
[Annahme: line ist "(xxxxxx@xxxxxxx) server adressen port usw...."]
...
pos = InStrRev(line, "@")
name = mid (line, pos, 10)
pos = InStrRev(name, ")")
name = left (line, pos-1)
...
-oder, nicht ganz so hölzern-
...
pos = InStrRev(line, "@")
name = mid (line, pos, InStrRev(line, ")"-1 )- pos)
Grüße
Biber
Moin dobihead,
An die Datei-Erstellungs/Änderungzeiten zu kommen ist kein Problem mehr, wenn Du schon das FileSystemObject instanziert hast und auch den Dateinamen weißt...
Grüße
Biber
An die Datei-Erstellungs/Änderungzeiten zu kommen ist kein Problem mehr, wenn Du schon das FileSystemObject instanziert hast und auch den Dateinamen weißt...
...
Set lizDatei = fso.OpenTextFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt", 1)
...
' lesen, anzeigen, ...
...
lizdatei.close
Set f = fso.GetFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt")
ostream.WriteLine "LizDatei vom " & f.DateCreated ' oder .DateModified
Grüße
Biber
salü
ausgehend von deinem codeschnipsel einfach abändern auf...
die genaue formatierung wie du des brauchst kriegste bestimmt auch noch selber hin ;)
gruss tacker
ausgehend von deinem codeschnipsel einfach abändern auf...
dim fso
set fso = createobject("Scripting.FileSystemobject")
Set ostream = fso.createTextfile("D:\PTC\proiclient3.4\bin\start\" & date() & "_" & time() & "_3C.txt", true)
Set lizDatei = fso.OpenTextFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt", 1)
ostream.writeline "PROE 3C Lizenzen"
do while not lizDatei.AtEndOfStream
line = lizdatei.readline()
If instr(1, line, "PROE_FLEX3C", 1) > 0 then
line = lizdatei.readline()
do until instr(1, line, "PROE_FoundationAdv", 1) > 0
posv = InStrRev(line, "@")
posh = InStrRev(line, ")")
name = mid (line, posv+1, posh-posv)
ostream.writeline name
line = lizdatei.readline()
Loop
End If
Loop
lizdatei.close
ostream.close
die genaue formatierung wie du des brauchst kriegste bestimmt auch noch selber hin ;)
gruss tacker