VBS-Batch - Script soll in einer test.txt Datei jede 5te Zeile von 0 auf 1 umschreiben
Einige Variablenparameterlisten ändern
Hallo,
da ich in diesem Forum schon einige Interessante und hilfreiche Beiträge gefunden habe aber leider nichts passendes zu meinem derzeitigen Problem, hoffe ich dass ihr mir weiter helfen könnt.
ich habe mehrere sehr große Text dateien, die die Parameter von TCP/IP-Treibern beinhalten. Leider sind diese Text-Dateien nicht korrekt.
Die Dateien sind so aufgebaut:
1000
ST_PH08_BM01
4500
68
1
1000
ST_PH08_BM02
4500
68
1
1000
ST_PH08_BM03
4500
68
1
1000
AS_PH08_DI01
4500
68
1
...
...
...
Ich benötige ein Script, egal ob VBS oder Batch, welches auf einem normalen PC ohne Visual Studio oder vergleichbares programmier/ausführbar ist. Dieses Script sollte jede "0" welche eine Zeile unter einem Variablennamen(ST_PH08_BM0x) steht zu einer 1 umschreiben.
Da es einige Dateien mit bis zu 1000 Variablen sind, möchte ich dies nicht zwingend per Hand machen!
Ich hoffe mir kann jemand weiter helfen!
Vielen Dank im voraus
Grüße
owni
Hallo,
da ich in diesem Forum schon einige Interessante und hilfreiche Beiträge gefunden habe aber leider nichts passendes zu meinem derzeitigen Problem, hoffe ich dass ihr mir weiter helfen könnt.
ich habe mehrere sehr große Text dateien, die die Parameter von TCP/IP-Treibern beinhalten. Leider sind diese Text-Dateien nicht korrekt.
Die Dateien sind so aufgebaut:
1000
ST_PH08_BM01
4500
68
1
1000
ST_PH08_BM02
4500
68
1
1000
ST_PH08_BM03
4500
68
1
1000
AS_PH08_DI01
4500
68
1
...
...
...
Ich benötige ein Script, egal ob VBS oder Batch, welches auf einem normalen PC ohne Visual Studio oder vergleichbares programmier/ausführbar ist. Dieses Script sollte jede "0" welche eine Zeile unter einem Variablennamen(ST_PH08_BM0x) steht zu einer 1 umschreiben.
Da es einige Dateien mit bis zu 1000 Variablen sind, möchte ich dies nicht zwingend per Hand machen!
Ich hoffe mir kann jemand weiter helfen!
Vielen Dank im voraus
Grüße
owni
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 101122
Url: https://administrator.de/forum/vbs-batch-script-soll-in-einer-test-txt-datei-jede-5te-zeile-von-0-auf-1-umschreiben-101122.html
Ausgedruckt am: 22.05.2025 um 12:05 Uhr
4 Kommentare
Neuester Kommentar
Hallo ownili und willkommen im Forum!
Was kann als Kennzeichen für eine Zeile, welche den Variablennamen enthält, verwendet werden - erste Stelle ist ein Buchstabe, Zeilenlänge, enthaltener "_"?
Für die erste Variante könnte ein VBScript etwa so aussehen:
In dieser Fassung wird die Originaldatei ersetzt (und keine Sicherungskopie erstellt).
Grüße
bastla
[Edit] Anforderung
jede "0" welche eine Zeile unter einem Variablennamen(ST_PH08_BM0x) steht zu einer 1 umschreiben
wörtlich genommen und per Ersetzung umgesetzt. [/Edit]
Was kann als Kennzeichen für eine Zeile, welche den Variablennamen enthält, verwendet werden - erste Stelle ist ein Buchstabe, Zeilenlänge, enthaltener "_"?
Für die erste Variante könnte ein VBScript etwa so aussehen:
Datei = "D:\Parameterdatei.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Zeilen = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLF)
U = UBound(Zeilen)
For i = 0 To U
If Zeilen(i) >= "A" Then If i < U Then Zeilen(i + 1) = Replace(Zeilen(i + 1), "0", "1")
Next
fso.CreateTextFile(Datei, True).Write Join(Zeilen, vbCrLF)
Grüße
bastla
[Edit] Anforderung
jede "0" welche eine Zeile unter einem Variablennamen(ST_PH08_BM0x) steht zu einer 1 umschreiben
wörtlich genommen und per Ersetzung umgesetzt. [/Edit]
Hallo ownili!
Weshalb ist die Zeile 3 bei Dir zur Zeile 5 geworden? Anyhow, ich habe eben nochmals Deine Testdaten und das Script hier heruntergeladen, in den entsprechenden Dateien in "C:\Test" gespeichert und erfolgreich ausgeführt. Eigentlich kann der Fehler bei Dir, wie ja auch der Meldung zu entnehmen ist, nur in einem falsch angegebenen Pfad liegen.
Da in VBS ab 0 gezählt wird, muss für die Zeile 10 in der "For"-Schleife mit 9 begonnen werden. Zu Deinen Testdaten passt allerdings ein 5-Zeilen-Abstand nicht wirklich - eher sollten es 7 sein ...
Um auch noch die "_"-Variante anzubieten:
Grüße
bastla
Weshalb ist die Zeile 3 bei Dir zur Zeile 5 geworden? Anyhow, ich habe eben nochmals Deine Testdaten und das Script hier heruntergeladen, in den entsprechenden Dateien in "C:\Test" gespeichert und erfolgreich ausgeführt. Eigentlich kann der Fehler bei Dir, wie ja auch der Meldung zu entnehmen ist, nur in einem falsch angegebenen Pfad liegen.
Ist es nicht auch möglich das Zeilenbezogen machen?
Sprich: z.b.:
Startzeile = 10
Abstand = 5(Zeilen)
Wenn damit gemeint ist, dass jeweils in den Zeilen 10, 15, 20, etc jede Null gegen eine Eins getauscht werden soll, dann so:Sprich: z.b.:
Startzeile = 10
Abstand = 5(Zeilen)
Datei = "C:\Test\Test.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Zeilen = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLF)
U = UBound(Zeilen)
For i = 9 To U Step 5
Zeilen(i) = Replace(Zeilen(i), "0", "1")
Next
fso.CreateTextFile(Datei, True).Write Join(Zeilen, vbCrLF)
Um auch noch die "_"-Variante anzubieten:
Datei = "C:\Test\Test.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Zeilen = Split(fso.OpenTextFile(Datei).ReadAll, vbCrLF)
U = UBound(Zeilen)
For i = 0 To U
If InStr(Zeilen(i), "_") > 0 Then If i < U Then Zeilen(i + 1) = Replace(Zeilen(i + 1), "0", "1")
Next
fso.CreateTextFile(Datei, True).Write Join(Zeilen, vbCrLF)
bastla