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 Problem mit Vb script beim suchen und speichern von bestimmten Abschnitt aus Textdatei

Mitglied: Dobihead

Dobihead (Level 1) - Jetzt verbinden

22.04.2008, aktualisiert 25.04.2008, 4857 Aufrufe, 14 Kommentare

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

01.
Const forReading =1 
02.

03.
dim test, test1, head
04.
Set fso = createObject("Scripting.FileSystemObject")
05.
Set ostream = fso.createTextfile("D:\PTC\proiclient3.4\bin\start\3C.txt", true)
06.
Set lizDatei = fso.OpenTextFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt", forreading)
07.
test = "abc"
08.
do until test <> "PROE_FLEX3C"
09.
lizdatei.skipline
10.
test = lizdatei.readline
11.
exit do
12.
loop
13.
head = "PROE 3C Lizenzen"
14.
test1 = "cds"
15.
do until test1 = "PROE_FundationAdv"
16.

17.
text = text + lizdatei.readline
18.
test1 = lizdatei.readline
19.

20.
	exit do
21.

22.
loop
23.
oStream.WriteLine head
24.
oStream.WriteLine text
25.
lizdatei.close
26.
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
Mitglied: tacker
22.04.2008 um 16:13 Uhr
salü!

lass ich deinen Scriptschnipsel durchlaufen, so krieg ich als output nur:

01.
PROE 3C Lizenzen
02.
"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!

01.
head = "PROE 3C Lizenzen"   ' erste zeile die geschrieben wird
02.
...
03.
text = text + lizdatei.readline  '  erste zeile die ausgelesen und niedergeschrieben wird
04.
...
05.
oStream.WriteLine head
06.
oStream.WriteLine text
hier ein funktionierender scriptschnipsel von mir - kannst ja ma vergleichen und bei bedarf fragen stellen!

01.
dim fso 
02.

03.
set fso = createobject("Scripting.FileSystemobject")
04.
Set ostream = fso.createTextfile("D:\PTC\proiclient3.4\bin\start\3C.txt", true)
05.
Set lizDatei = fso.OpenTextFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt", 1)
06.

07.
ostream.writeline "PROE 3C Lizenzen"
08.

09.
do while not lizDatei.AtEndOfStream
10.
    line = lizdatei.readline()
11.
    If instr(line, "PROE_FLEX3C") > 0 then
12.
        line = lizdatei.readline()
13.
        do until instr(line, "PROE_FundationAdv") > 0
14.
           ostream.writeline line
15.
           line = lizdatei.readline()
16.
        Loop
17.
    End If                    
18.
Loop
19.

20.
lizdatei.close
21.
ostream.close

gruss tacker
Bitte warten ..
Mitglied: Dobihead
22.04.2008 um 17:08 Uhr
Danke dir Tacker.

Hat funktioniert, musste nur noch die instr funktion anpassen, das er den Textvergleich macht.

Noch mal für mich zum Verständis.
Es wird jede zeile bis zum ende der Datei eingelesen und in die variable line gespeichert, sobald der Suchwert vorkommt, speichert er die nächsten Zeilen in die neue Datei. Das macht er solange bis der zweite suchwert gefunden wurde. Ist das soweit richtig?

Ich hab da gleich nochmal ein Frage:

Ich bekomme eine String zurück, aus diesen möchte ich aber nur einen bestimmten wert in die datei schreiben. würde das gehen wenn ich die Bedinungen dafür in die schleife mit rein bringe?

wenn ja würde ich das probieren und dir das Script, zeigen fals es nicht geht.

Danke im vorraus für deine Antwort.

mfg Dobihead
Bitte warten ..
Mitglied: Dobihead
22.04.2008 um 17:43 Uhr
So dass hätte ich dann auch geschafft. Ich in der zweiten Schliefe mit InStrRev und mid gearbeitet.

Das sieht dann so aus
01.
dim fso 
02.

03.
set fso = createobject("Scripting.FileSystemobject")
04.
Set ostream = fso.createTextfile("D:\PTC\proiclient3.4\bin\start\3C.txt", true)
05.
Set lizDatei = fso.OpenTextFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt", 1)
06.

07.
ostream.writeline "PROE 3C Lizenzen"
08.

09.
do while not lizDatei.AtEndOfStream
10.
    line = lizdatei.readline()
11.
    If instr(1, line, "PROE_FLEX3C", 1) > 0 then
12.
        line = lizdatei.readline()
13.
        do until instr(1, line, "PROE_FoundationAdv", 1) > 0
14.
	   pos = InStrRev(line, "@")
15.
	   name = mid (line, pos, 10)
16.
           ostream.writeline name
17.
           line = lizdatei.readline()
18.
        Loop
19.
    End If                    
20.
Loop
21.

22.
lizdatei.close
23.
ostream.close
24.

25.
Nun hab ich das Problem, dass der Rückgabe String name immer unterschiedlich lang ist. Wenn ich bei mid den Wert auf den längsten String setze, dann bekomm ich bei kürzen zeichen mit, die ich nicht will.

Gibt es da ne andere Lösung bzw Funktion oder ähnliches?

mfg Dobi
Bitte warten ..
Mitglied: tacker
22.04.2008 um 19:34 Uhr
n'abend!

gib doch ma ein beispiel, wie deine Datei "lizakt.txt" ungefähr aussieht und was du daraus genau haben willst!

Gruss tacker
Bitte warten ..
Mitglied: Dobihead
23.04.2008 um 00:05 Uhr
naja meine txt sieht ungefähr so aus:

(xxxxxx@xxxxxxx) server adressen port usw....
(xxxxxx@xxxxxx) server adressen port usw....
(xxxxxx@xxxxxxxxx) server adressen port usw....

bekomme max 3 Einträge. Ich benötige nur die xxxxxx nach dem @. Habe heut abend mich noch mal damit beschäftigt. Ich denkle das die Lösugn ei Vergleich ist, aber wie mache ich den? gibt es da auch ein Funktion wie InStrRev?

Gruß Dobi
Bitte warten ..
Mitglied: tacker
23.04.2008 um 08:47 Uhr
guten morgen!

halt dich doch einfach an ein eventuelles zweites zeichen, welches noch vorkommt, anhand welchem du dann mit der funktion mid() den endpunkt bestimmen kannst...

tacker
Bitte warten ..
Mitglied: Biber
23.04.2008 um 09:18 Uhr
... ganz unelegant, aber ausreichend wäre....
[Annahme: line ist "(xxxxxx@xxxxxxx) server adressen port usw...."]
01.
...
02.
	   pos = InStrRev(line, "@")
03.
	   name = mid (line, pos, 10)
04.
	   pos = InStrRev(name, ")")
05.
	   name = left (line, pos-1)
06.
  ...
-oder, nicht ganz so hölzern-
01.
...
02.
	   pos = InStrRev(line, "@")
03.
	   name = mid (line, pos, InStrRev(line, ")"-1 )- pos)
[...wie immer ungetestet]

Grüße
Biber
Bitte warten ..
Mitglied: Dobihead
23.04.2008 um 18:42 Uhr
Ich danke euch beiden für eure Hilfe.
Hab das jetzt so gelöst.

01.

02.
dim fso 
03.

04.
set fso = createobject("Scripting.FileSystemobject")
05.
Set ostream = fso.createTextfile("D:\PTC\proiclient3.4\bin\start\3C.txt", true)
06.
Set lizDatei = fso.OpenTextFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt", 1)
07.

08.
ostream.writeline "PROE 3C Lizenzen"
09.

10.
do while not lizDatei.AtEndOfStream
11.
    line = lizdatei.readline()
12.
    If instr(1, line, "PROE_FLEX3C", 1) > 0 then
13.
        line = lizdatei.readline()
14.
        do until instr(1, line, "PROE_FoundationAdv", 1) > 0
15.
	   posv = InStrRev(line, "@")
16.
	   posh = InStrRev(line, ")")
17.
	   name = mid (line, posv+1, posh-posv)
18.
           ostream.writeline name
19.
           line = lizdatei.readline()
20.
        Loop
21.
    End If                    
22.
Loop
23.

24.
lizdatei.close
25.
ostream.close
26.
Nun bin ich dabei das Datum und Zeit als Dateiname, wann die Datei erstellt wurde, verwendet wird. Das bekomme ich bestimmt auch hin. Es müsste doch mit date und Time funktionieren oder?

Gruß Dobihead
Bitte warten ..
Mitglied: Biber
23.04.2008 um 19:04 Uhr
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...
01.
...
02.
Set lizDatei = fso.OpenTextFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt", 1)
03.
... 
04.
' lesen, anzeigen, ...
05.
...
06.
lizdatei.close
07.

08.
Set f = fso.GetFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt")
09.
ostream.WriteLine "LizDatei vom " & f.DateCreated  ' oder .DateModified
Grüße
Biber
Bitte warten ..
Mitglied: Dobihead
23.04.2008 um 21:33 Uhr
01.
 Set f =
02.
 fso.GetFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt")
03.
 ostream.WriteLine "LizDatei vom "
04.
 & f.DateCreated  ' oder .DateModified
05.
 
Dabei überschreib ich doch meine vorhandene datei lizakt.txt oder? Wenn ja und ich die datei §c.txt ändern will, brauch ich das doch "nur" zu ersetzen oder?

Gruß Dobihead
Bitte warten ..
Mitglied: Biber
23.04.2008 um 22:00 Uhr
Dabei überschreib ich doch meine vorhandene datei lizakt.txt oder?
Hätte ich Dir dann die GetFile()-Methode in die Hand gedrückt? *beleidigt guck*

Sorry, hatte falsch gelesen.
Ich dachte, du wolltest das Dateidatum der lizakt.txt in Deine oStream-Datei schreiben...

Nehme alles zurück
Biber
Bitte warten ..
Mitglied: tacker
23.04.2008 um 23:02 Uhr
salü

ausgehend von deinem codeschnipsel einfach abändern auf...

01.
dim fso 
02.

03.
set fso = createobject("Scripting.FileSystemobject")
04.
Set ostream = fso.createTextfile("D:\PTC\proiclient3.4\bin\start\" & date() & "_" & time() & "_3C.txt", true)
05.
Set lizDatei = fso.OpenTextFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt", 1)
06.

07.
ostream.writeline "PROE 3C Lizenzen"
08.

09.
do while not lizDatei.AtEndOfStream
10.
    line = lizdatei.readline()
11.
    If instr(1, line, "PROE_FLEX3C", 1) > 0 then
12.
        line = lizdatei.readline()
13.
        do until instr(1, line, "PROE_FoundationAdv", 1) > 0
14.
	   posv = InStrRev(line, "@")
15.
	   posh = InStrRev(line, ")")
16.
	   name = mid (line, posv+1, posh-posv)
17.
           ostream.writeline name
18.
           line = lizdatei.readline()
19.
        Loop
20.
    End If                    
21.
Loop
22.

23.
lizdatei.close
24.
ostream.close
die genaue formatierung wie du des brauchst kriegste bestimmt auch noch selber hin ;)

gruss tacker
Bitte warten ..
Mitglied: Dobihead
25.04.2008 um 08:42 Uhr
Morgen,

hab das jetzt so gelöst. Nur mal das geänderte, sonst wird das immer so lang^^
01.
dim fso
02.
zeit= FormatDateTime (Now,  4)
03.
zeit = replace (zeit, ":", "-")
04.
datum = year(now) & "-"
05.
datum = datum & month(now) & "-" 
06.
datum = datum & day(now)
07.

08.
set fso = createobject("Scripting.FileSystemobject")
09.
set ostream = fso.createTextfile("D:\PTC\proiclient3.4\bin\start\" & datum & "_" & zeit &  "_Flex3C.txt", true)
10.
.......

Aber aber noch das Problem, das der Monat nicht mit 04 sondern nur 4 angezeigt wird. aber daüfr find ich bestimtm auch noch ne Lösung.

Mfg Dobihead
Bitte warten ..
Mitglied: Dobihead
25.04.2008 um 09:01 Uhr
Das ging schneller als gedacht. Hier ist mein kompletter Code, vllt bruacht das jemand anderes auch mal. Datums- und Zeitformatierung erfolgt nach den schema yyyy-mm-dd_hh-mm

01.

02.
dim fso
03.
zeit = FormatDateTime (Now,  4)
04.
zeit = replace (zeit, ":", "-")
05.
datum = year(now) & "-"
06.
datumwert = instr (month(now), "0")
07.
if datumwert = 0 then
08.
	datum = datum & "0" & month(now)
09.
	else
10.
	datum = datum  & month(now)
11.
end if
12.
datum = datum & "-" & day (now)
13.
msgbox test
14.
msgbox datum
15.
set fso = createobject("Scripting.FileSystemobject")
16.
set ostream = fso.createTextfile("D:\PTC\proiclient3.4\bin\start\" & datum & "_" & zeit &  "_Flex3C.txt", true)
17.

18.
set lizDatei = fso.OpenTextFile("D:\PTC\proiclient3.4\bin\start\lizakt.txt", 1)
19.

20.

21.
ostream.writeline "PROE Flex 3C Lizenzen"
22.

23.
do while not lizDatei.AtEndOfStream
24.
    line = lizdatei.readline()
25.
    If instr(1, line, "PROE_FLEX3C", 1) > 0 then
26.
        line = lizdatei.readline()
27.
        do until instr(1, line, "PROE_FoundationAdv", 1) > 0
28.
	   posv = InStrRev(line, "@")
29.
	   posh = InstrRev(line, ")")
30.
	   name = mid (line, posv+1, posh-posv-1)
31.
	   ostream.writeline name
32.
           line = lizdatei.readline()
33.
        Loop
34.
    End If                    
35.
Loop
36.

37.
lizdatei.close
38.
ostream.close
39.
danke nochmal an Biber und tacker für Ihre Hilfeund Unterstüzung bei der Problemlösung.

Mfg Dobihead
Bitte warten ..
Ähnliche Inhalte
VB for Applications

VB-Script in VB-Script starten und Parameter übergeben

gelöst Frage von denkisVB for Applications7 Kommentare

Hallo liebe Scriptgemeinde, ich muss mehrere Rechner für den Übergang in eine neue Domäne vorbereiten. Dafür sind drei wesentliche ...

Batch & Shell

VB Script ändert Dateinamen

gelöst Frage von mschaedler1982Batch & Shell5 Kommentare

Hallo zusammen. Kurze Erläuterung zu diesem Thema. Eine Maschine legt jeden Tag zu einer bestimmten Uhrzeit sehr sehr viele ...

VB for Applications

VB-Script per Aufgabenplanung

gelöst Frage von S4kar97VB for Applications2 Kommentare

Hallo, Ich habe mir ein VB-Script erstellt, welches im Grunde ein Programm startet und diesem Parameter übergibt und die ...

Entwicklung

VB Script Drucker hinzufügen

Frage von Marcel1989Entwicklung3 Kommentare

Funktionsweise sollte definitiv sein das mit einem Script sich 2 verschiedene Betriebssysteme ein und denselben Drucker holen. Mein Script ...

Neue Wissensbeiträge
Windows 10

Windows 10 kann XPS erzeugen aber nicht anzeigen ????

Erfahrungsbericht von Deepsys vor 20 StundenWindows 10

Heute schickt mir ein Kollegen eine E-Mail mit einer XPS-Datei vom Kunden im Anhang und fragt wie er diese ...

Exchange Server

1und1 IONOS: Probleme beim Mailversand mit Exchange

Information von reksierp vor 1 TagExchange Server3 Kommentare

Hallo, seit Do, 17.1.19 etwa Mittags nimmt 1und1 IONOS keine Mails mehr über den Standard-Port SMTP 25 an. Nachdem ...

LAN, WAN, Wireless

Cisco Mikrotik VPN Standort Vernetzung mit dynamischem Routing

Anleitung von aqui vor 1 TagLAN, WAN, Wireless

1. Allgemeine Einleitung Das nachfolgende Tutorial ist eine Fortführung der hier bei Administrator.de schon bestehenden VPN Tutorials und beschreibt ...

Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 3 TagenWindows Mobile1 Kommentar

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Heiß diskutierte Inhalte
Windows Server
MSSQL Backup in Form von .sql einspielen
Frage von janosch12Windows Server14 Kommentare

Guten Morgen, wir verwenden das Tool SQLandFTPBackup ( ) zum sichern einiger MSSQL Datenbanken. Nun sichert das Toll die ...

LAN, WAN, Wireless
Wo lässt sich das Gateway in der FRITZ!Box 7360 einstellen?
gelöst Frage von OssabowLAN, WAN, Wireless13 Kommentare

Hallo all, nach gründlicher Suche scheine ich der einzige zu sein der das Problem hat (macht micht schon mal ...

Microsoft Office
Office 2016 oder Office 2019
Frage von PeterzMicrosoft Office13 Kommentare

Hallo zusammen, wir müssen unser Office von 2010 auf eine neuere Version Umstellen. Jetzt stellt sich die Frage, ob ...

Windows Server
"Konfiguration des Remotedesktop-Sitzungshosts" unter Windows 2016
gelöst Frage von emeriksWindows Server12 Kommentare

Hi, unter Windows 2008 R2 gab es noch eine MMC "Konfiguration des Remotedesktop-Sitzungshosts". Da kann man. u.a. die Konfiguration ...