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, 7169 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 ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(2)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
Text in neue 1. Zeile in Textdatei einfügen (4)

Frage von FuxxLi zum Thema Batch & Shell ...

VB for Applications
gelöst Vbscript bestimmte Zeile ungeachtet der Nummerierung löschen (4)

Frage von aletri zum Thema VB for Applications ...

Datenbanken
Mit sql eine Zeile einfügen, select und feste Werte (9)

Frage von helmuthelmut2000 zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...