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

Frage Entwicklung

GELÖST

Zeile in Textdatei einfügen mit VBScript

Mitglied: 100320

100320 (Level 1)

31.05.2011, aktualisiert 16:55 Uhr, 7588 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
VbScript: ADODB.Stream: Neue Zeile einfügen
gelöst Frage von BirdyBVB for Applications2 Kommentare

Hallo zusammen, ich habe hier ein vb-skript, welches einen ADODB.Stream erzeugt und diesen mit Text füllt. Ich würde gerne ...

VB for Applications
VbScript: Textdatei nach Suchbegriff nur die nächsten drei Zeilen ausgeben
gelöst Frage von Host-essVB for Applications10 Kommentare

Moin, Moin, ich bin neu hier im Forum und auch Neuling was Vbscript betrifft. Vielleicht kann mir ja jemand ...

Batch & Shell
Text in neue 1. Zeile in Textdatei einfügen
Frage von FuxxLiBatch & Shell4 Kommentare

Hallo, Folgender Sachverhalt. Die Warenwirtschaft wirft ein Exportfile mit einer Kopfzeile und danach den Datensätzen aus. Für die Weiterverarbeitung ...

Batch & Shell
Textdatei Zeile für Zeile auslesen
Frage von RIPUEDBatch & Shell

Hallo, ich würde gerne mit einem Batch-Skript Zeilen aus einer Textdatei einzeln und nacheinander auslesen und diese dann nach ...

Neue Wissensbeiträge
Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 1 StundeDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 6 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
Frage von a-za-zNetzwerkmanagement13 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk10 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS10 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Router & Routing
Firewall Homeoffice
Frage von leon123Router & Routing6 Kommentare

Hallo zusammen, ich möchte meine beiden Rechner von der Firma vom Heimbereich abtrennen. Die Fritzbox kann leider nur den ...