Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Zeile in Textdatei einfügen mit VBScript

Frage Entwicklung

Mitglied: 100320

100320 (Level 1)

31.05.2011, aktualisiert 16:55 Uhr, 7416 Aufrufe, 9 Kommentare

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)
01.
today = Date() 
02.
Dim present  
03.
present = Time() 
04.
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) 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
Set oFile = fso.OpenTextFile("M:\Matt\_16_VBS\Datapage\52585.txt") 
08.
i=0 
09.
' Erstmal zählen wieviele Einträge 
10.
while not oFile.AtEndOfStream 
11.
i=i+1 
12.
oFile.ReadLine 
13.
Wend 
14.
oFile.Close 
15.
' Array definieren 
16.
REDIM sEingabe(i) 
17.
Set oFile = fso.OpenTextFile("M:\Matt\_16_VBS\Datapage\52585.txt") 
18.
i=0 
19.
' Jetzt Werte ins Array übernehmen 
20.
while not oFile.AtEndOfStream 
21.
sEingabe(i)=oFile.ReadLine 
22.
i=i+1 
23.
Wend 
24.
oFile.Close 
25.
'Beispiel für Zugriff 
26.
 
27.
for j= 1 to i 
28.
if Instr(sEingabe(j), "Auftragsnummer") then  
29.
Auftragsnr = mid(sEingabe(j), 18) 
30.
end if 
31.
next 
32.
for k= 1 to i 
33.
if Instr(sEingabe(k), "Werkzeugnummer") then  
34.
Werkzeugnr = mid(sEingabe(k), 18) 
35.
end if 
36.
next 
37.
for m= 1 to i 
38.
if Instr(sEingabe(m), "Chargennummer") then  
39.
Chargennr = mid(sEingabe(m), 17) 
40.
end if 
41.
next 
42.
Sequenznr = Zeitstempel & "$" & Auftragsnr & "$" & Werkzeugnr & "$" & Chargennr 
43.
 
44.
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
Mitglied: bastla
31.05.2011 um 15:12 Uhr
Hallo faro01 und willkommen im Forum!

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:")
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 "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ürde
sEingabe = Split(fso.OpenTextFile("M:\Matt\_16_VBS\Datapage\52585.txt").ReadAll, vbCrLf)
genügen. Den höchsten Index von "sEingabe" findest Du dann mit "UBound()"

Grüße
bastla
Bitte warten ..
Mitglied: 100320
31.05.2011 um 15:21 Uhr
Erst einmal danke für die schnelle Antwort.

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?

Das datum habe ich leider in keiner Variable ist das hier egal? das datum steht fest in der Textdatei.

Kannst du mir vll noch erklären was du meinst mit write? Verstehe es leider nicht ganz wie ich das ganze in die Textdatei schreibe und es dann so bleibt.

Grüße
Bitte warten ..
Mitglied: Skyemugen
31.05.2011 um 15:24 Uhr
Aloha und willkommen im Forum,

weil der bastla dieses Mal nicht gleich (bei der Flut im EP) auf die Codeformatierung (mit Hilfe der <code></code> Tags) hingewiesen hat, möchte ich das tun, weil es dann doch optisch ansprechender und einfacher ist zu lesen.

greetz André
Bitte warten ..
Mitglied: TsukiSan
31.05.2011 um 15:25 Uhr
Hallo faro01,

höre auf bastla!

hier mal kurz was zusammengebaut, was dich interessieren könnte:
01.
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) 
02.
 
03.
Set fso = CreateObject("Scripting.FileSystemObject") 
04.
oFile = fso.OpenTextFile("C:\Sequenz.txt",1).ReadAll 
05.
 
06.
Moeglichkeit1 = Zeitstempel &vbcrlf & oFile 
07.
 
08.
msgbox Moeglichkeit1 
09.
 
10.
oFile = Split(fso.OpenTextFile("C:\Sequenz.txt",1).ReadAll,"Bediener - ") 
11.
 
12.
Moeglichkeit2 = Join(oFile,"Bediener - " & Zeitstempel) 
13.
 
14.
msgbox Moeglichkeit2
der write-Befehl dient dann dazu, die gesamten Infos wieder als neue Datei abzulegen.
Als Beispiel:
01.
fso.CreateTextFile("C:\Sequenz.txt", True).Write Moeglichkeit1
Gruss
Tsuki
Bitte warten ..
Mitglied: 100320
31.05.2011 um 15:31 Uhr
Vielen Dank!

euch beiden!! ;)

Es funktioniert einwandfrei!!
Ich habe mir darüber den halben Tag den Kopf zerbrochen und die Lösung ist so einfach!

...das nächste Mal denke ich auch an die Codeformatierung !!

Viele Grüße
Markus
Bitte warten ..
Mitglied: bastla
31.05.2011 um 15:32 Uhr
Hallo faro01!
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
Bitte warten ..
Mitglied: 100320
31.05.2011 um 15:51 Uhr
Noch eine kleine Frage bezüglich meines Codes.

Ich habe den Code zum Testen nur auf eine datei ausgelegt, doch später sollen in dem Ordner meherer Textdateien vorhanden sein bei denen alle die Sequenznr eingefügt werden muss.

Wie muss ich da mein Code erweitern damit dies möglich ist?

Grüße
Bitte warten ..
Mitglied: TsukiSan
31.05.2011 um 15:56 Uhr
dazu eine kleine Antwort:
bau dir eine Schleife drum herum und google vorher nach GetFolder und ggf. Subfolders
in VBS.
Oder mach einen neuen Thread auf mit besagten Problem
Aber erst einmal die Suchmaschine anschmeissen und dann posten!

Gruss
Tsuki
Bitte warten ..
Mitglied: Snowman25
31.05.2011 um 16:53 Uhr
...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
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst VbScript: ADODB.Stream: Neue Zeile einfügen (2)

Frage von BirdyB zum Thema VB for Applications ...

VB for Applications
gelöst Per Vbscript bestimmte Zeile ungeachtet der Nummerierung prüfen (7)

Frage von aletri zum Thema VB for Applications ...

Batch & Shell
gelöst Erstellungsdatum vor jede Zeile einer Textdatei schreiben (5)

Frage von freakonaleash zum Thema Batch & Shell ...

Batch & Shell
gelöst Mittels Batch jede Zeile einer Textdatei prüfen (4)

Frage von Peter32 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 im Unternehmen? (26)

Frage von zorlayan zum Thema Windows 10 ...

LAN, WAN, Wireless
Ping u. DNS geht am Rechner nicht mehr (19)

Frage von Kuemmel zum Thema LAN, WAN, Wireless ...

Festplatten, SSD, Raid
Raid 1 2 SSD mit Windows Server 2016 (17)

Frage von jaywee zum Thema Festplatten, SSD, Raid ...

Voice over IP
Über Fritzfax over IP gehen nur einige Faxe (12)

Frage von shearer9 zum Thema Voice over IP ...