100320
May 31, 2011, updated at 14:55:56 (UTC)
11964
9
0
Zeile in Textdatei einfügen mit VBScript
Hallo,
erstmal ein Hallo an die Community
ich möchte einen String (Sequenznr) in eine Textdatei über VBS einfügen.
String ist in meinem Beispiel die "Sequenznr"
Der String soll immer an der gleichen Stelle in der Textdatei stehen. Entweder als erstes oder nach einem bestimmten Begriff
Meine Idee ist dass nach einem Begriff gesucht wird, wäre in meinem Besipiel der Begriff " Bediener". Dieser Begriff ist immer fest und in jeder Textdatei vorhanden.
Nach diesem Begriff soll der String/Zeile eingefügt werden.
Hab schon lange gesucht doch nichts genaues gefunden.
Hoffe auf Hilfe ;)
Hier mein bisheriger Code: ( Hier wird die Sequenznr zusammengebaut)
Const ForReading = 1, ForWriting = 2, ForAppending = 8
set File = fso.OpenTextFile("M:\Matt\_16_VBS\Datapage\52585.txt")
strGelesen = File.ReadAll
strGelesen = Replace(strGelesen,";",",")
msgbox strgelesen
bis hierhin läuft der Code einwandfrei.
Der Kopf der Textdatei ist folgendermaßen aufgebaut:
Datum: 27.05.2011 11:14:40
Merkmalname;Sollwert;UT;LT;Gemessen
Bauteilname - 52285 Zylinderkopf 01
Bediener - Eichhorn
Prüfplannummer - 010 33 52585
Auftragsnummer - 208991
Werkzeugnummer - Nest1
Chargennummer - 759427
Hinweis -
Fehler - aktive Ausrichtung - 0,000mm
P04-02-08-24124 Aktueller Gerätefehler -
Möglichkeit 1 wäre die Sequenznr als erstes zu positionieren. Über dem Datum!(was mir am liebsten wäre)
Möglichkeit 2 wäre die Sequenznr hinter der Zeile "Bediener" einzufügen.
Momentan habe ich so angefangen dass ich mit einer for schleife nach Bediener suche den habe ich auch gefunden doch wenn ich nun versuche mit writeline etwas einzufügen schreibt es mir nur die Sequenznr in die Textdatei und löscht den Rest.
Ich mache viel mit VBA doch VBS ist doch etwas anderst und manchmal komme ich nicht weiter.
ich denke das es nicht so schwer sein kann es zu programmieren, doch ich finde keine Hilfe dazu und komm nicht weiter.
Hoffe es war einigermaßen verständlich meine Erklärung.
Grüße und schon jetzt vielen Dank ;)
Markus
erstmal ein Hallo an die Community
ich möchte einen String (Sequenznr) in eine Textdatei über VBS einfügen.
String ist in meinem Beispiel die "Sequenznr"
Der String soll immer an der gleichen Stelle in der Textdatei stehen. Entweder als erstes oder nach einem bestimmten Begriff
Meine Idee ist dass nach einem Begriff gesucht wird, wäre in meinem Besipiel der Begriff " Bediener". Dieser Begriff ist immer fest und in jeder Textdatei vorhanden.
Nach diesem Begriff soll der String/Zeile eingefügt werden.
Hab schon lange gesucht doch nichts genaues gefunden.
Hoffe auf Hilfe ;)
Hier mein bisheriger Code: ( Hier wird die Sequenznr zusammengebaut)
today = Date()
Dim present
present = Time()
Zeitstempel = Year(today) & right("0" & Month(today), 2) & right("0" & Day(today), 2) & right("0" & Hour(present), 2) & right("0" & Minute(present), 2) & right("0" & Second(present), 2)
Set fso = CreateObject("Scripting.FileSystemObject")
Set oFile = fso.OpenTextFile("M:\Matt\_16_VBS\Datapage\52585.txt")
i=0
' Erstmal zählen wieviele Einträge
while not oFile.AtEndOfStream
i=i+1
oFile.ReadLine
Wend
oFile.Close
' Array definieren
REDIM sEingabe(i)
Set oFile = fso.OpenTextFile("M:\Matt\_16_VBS\Datapage\52585.txt")
i=0
' Jetzt Werte ins Array übernehmen
while not oFile.AtEndOfStream
sEingabe(i)=oFile.ReadLine
i=i+1
Wend
oFile.Close
'Beispiel für Zugriff
for j= 1 to i
if Instr(sEingabe(j), "Auftragsnummer") then
Auftragsnr = mid(sEingabe(j), 18)
end if
next
for k= 1 to i
if Instr(sEingabe(k), "Werkzeugnummer") then
Werkzeugnr = mid(sEingabe(k), 18)
end if
next
for m= 1 to i
if Instr(sEingabe(m), "Chargennummer") then
Chargennr = mid(sEingabe(m), 17)
end if
next
Sequenznr = Zeitstempel & "$" & Auftragsnr & "$" & Werkzeugnr & "$" & Chargennr
msgbox Sequenznr
Const ForReading = 1, ForWriting = 2, ForAppending = 8
set File = fso.OpenTextFile("M:\Matt\_16_VBS\Datapage\52585.txt")
strGelesen = File.ReadAll
strGelesen = Replace(strGelesen,";",",")
msgbox strgelesen
bis hierhin läuft der Code einwandfrei.
Der Kopf der Textdatei ist folgendermaßen aufgebaut:
Datum: 27.05.2011 11:14:40
Merkmalname;Sollwert;UT;LT;Gemessen
Bauteilname - 52285 Zylinderkopf 01
Bediener - Eichhorn
Prüfplannummer - 010 33 52585
Auftragsnummer - 208991
Werkzeugnummer - Nest1
Chargennummer - 759427
Hinweis -
Fehler - aktive Ausrichtung - 0,000mm
P04-02-08-24124 Aktueller Gerätefehler -
Möglichkeit 1 wäre die Sequenznr als erstes zu positionieren. Über dem Datum!(was mir am liebsten wäre)
Möglichkeit 2 wäre die Sequenznr hinter der Zeile "Bediener" einzufügen.
Momentan habe ich so angefangen dass ich mit einer for schleife nach Bediener suche den habe ich auch gefunden doch wenn ich nun versuche mit writeline etwas einzufügen schreibt es mir nur die Sequenznr in die Textdatei und löscht den Rest.
Ich mache viel mit VBA doch VBS ist doch etwas anderst und manchmal komme ich nicht weiter.
ich denke das es nicht so schwer sein kann es zu programmieren, doch ich finde keine Hilfe dazu und komm nicht weiter.
Hoffe es war einigermaßen verständlich meine Erklärung.
Grüße und schon jetzt vielen Dank ;)
Markus
Please also mark the comments that contributed to the solution of the article
Content-Key: 167264
Url: https://administrator.de/contentid/167264
Printed on: April 25, 2024 at 22:04 o'clock
9 Comments
Latest comment
Hallo faro01 und willkommen im Forum!
Als Kurzfassung: Wenn es nur eine Zeile gibt, die mit "Datum:" beginnt, würde ich einfach ein weiteres "
Dadurch wird anstelle von "Datum:" Deine Sequenz + eine Zeilenschaltung + wieder "Datum:" in den String eingefügt.
Wenn Du fertig bist, brauchst Du nur ein einziges "
Um übrigens ein Array "
genügen. Den höchsten Index von "
Grüße
bastla
Als Kurzfassung: Wenn es nur eine Zeile gibt, die mit "Datum:" beginnt, würde ich einfach ein weiteres "
Replace()
" verwenden - also etwa:strGelesen = Replace(strGelesen, "Datum:", Sequenz & vbCrLf & "Datum:")
Wenn Du fertig bist, brauchst Du nur ein einziges "
Write
" für den gesamten String auszuführen.Um übrigens ein Array "
sEingabe()
" für die Zeilen der Datei "M:\Matt\_16_VBS\Datapage\52585.txt") zu erhalten, würdesEingabe = Split(fso.OpenTextFile("M:\Matt\_16_VBS\Datapage\52585.txt").ReadAll, vbCrLf)
sEingabe
" findest Du dann mit "UBound()
"Grüße
bastla
Hallo faro01,
höre auf bastla!
hier mal kurz was zusammengebaut, was dich interessieren könnte:
der write-Befehl dient dann dazu, die gesamten Infos wieder als neue Datei abzulegen.
Als Beispiel:
Gruss
Tsuki
höre auf bastla!
hier mal kurz was zusammengebaut, was dich interessieren könnte:
Zeitstempel = Year(today) & right("0" & Month(today), 2) & right("0" & Day(today), 2) & right("0" & Hour(present), 2) & right("0" & Minute(present), 2) & right("0" & Second(present), 2)
Set fso = CreateObject("Scripting.FileSystemObject")
oFile = fso.OpenTextFile("C:\Sequenz.txt",1).ReadAll
Moeglichkeit1 = Zeitstempel &vbcrlf & oFile
msgbox Moeglichkeit1
oFile = Split(fso.OpenTextFile("C:\Sequenz.txt",1).ReadAll,"Bediener - ")
Moeglichkeit2 = Join(oFile,"Bediener - " & Zeitstempel)
msgbox Moeglichkeit2
der write-Befehl dient dann dazu, die gesamten Infos wieder als neue Datei abzulegen.
Als Beispiel:
fso.CreateTextFile("C:\Sequenz.txt", True).Write Moeglichkeit1
Gruss
Tsuki
Hallo faro01!
Zu "
Grüße
bastla
wenn ich es richtig verstanden habe, wird durch den replace() das datum durch die Sequenznr ersetzt und nach dem Zeilenumbruch wieder das datum eingefügt?
Nicht das "Datum", sondern der String "Datum:" (nach dem ja beim Ersetzen auch gesucht werden muss) ...Zu "
Write
" siehe das Beispiel von Tsuki ...Grüße
bastla
...das nächste Mal denke ich auch an die Codeformatierung !!
Könntest du bitte deinen Eingangspost auch entsprechend editieren?Administrator.de bekommt viele Klicks von Suchmaschienenbenutzer, welche ihre Probleme lösen möchten. Da ist es angenehmer, wenn Code vom Text unterscheidbar und lesbar ist.
Gruß
Snow