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 Zeile in Textdatei einfügen mit VBScript

Mitglied: 100320

100320 (Level 1)

31.05.2011, aktualisiert 16:55 Uhr, 7711 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
Windows 7

Windows 7 - Server 2008 R2: Exploit für Total Meltdown verfügbar

Information von kgborn vor 1 TagWindows 7

Kleine Information für Administratoren, die für die Updates von Windows 7 SP1 und Windows Server 2008 R2 SP1 verantwortlich ...

Sicherheit

Zero Day-Schwachstelle im Internet Explorer - wird von APT bereits ausgenutzt

Information von kgborn vor 1 TagSicherheit

Im Kernel des Internet Explorer scheint es eine Zero Day-Lücke zu geben, die von staatlichen Akteuren (APT) im Rahmen ...

Microsoft
Folder Security Viewer-Lizenzen zu gewinnen
Information von kgborn vor 1 TagMicrosoft

Ich nehme das Thema mal in Absprache mit Frank hier auf, da es für den einen oder anderen Administrator ...

Hardware

Feueralarm killt Festplatten in Rechenzentrum - führt zu größerem Ausfall

Information von kgborn vor 1 TagHardware12 Kommentare

Noch ein kleiner Beitrag für Administratoren, die in Rechenzentren aktiv sind - so als Fingerzeig. Denn es gibt Szenarien, ...

Heiß diskutierte Inhalte
C und C++
Frage1 C Programmierung-Makefile Frage2 PHP-Programmierung HTTP-Fehler 404
Frage von KatalinaC und C++27 Kommentare

Hallo, ich habe 2 Fragen, die nichts miteinander zu tun haben aber mit denen ich mich gerade beschäftige: 1. ...

Linux
Linux Server oder Windows Server - lohnt eine Umstellung auf Linux und ebenso basierende SW bei einer langfristigen Planung?
Frage von motus5Linux27 Kommentare

Wir brauchen bei uns einen neuen Server. Dieser wird als Fileserver, Domäne Controller sowie Exchange Server verwendet. Wir versuchen ...

LAN, WAN, Wireless
Watchguard T15 VPN Einrichtung
gelöst Frage von thomasjayLAN, WAN, Wireless22 Kommentare

Hallo zusammen, wir möchten gerne über unsere Watchguard T15 einen VPN-Tunnel (Mobile VPN with IPSec) einrichten! Als Client nutzen ...

DSL, VDSL
ISP Wechsel auf Vodefone Koax, Gebäudeverkabelung nur per Cat 7
gelöst Frage von wusa88DSL, VDSL19 Kommentare

Hallo Zusammen, ich bin momentan bei Mnet als Glasfaser Kunde und möchte Preis/Leistungs-Technisch zu Kabel Deutschland / Vodafone wechseln. ...