Per Batch eine bestimmte Zeichenfolge auslesen
Guten Abend zusammen.
Ich habe sehr lange nach der Lösung zu meinem Problem gesucht. Dann bin ich au dieses Forum hier gestossen.
Folgendes:
Ich habe eine .txt Datei. Dort steh ganz viel wirres Zeug drin. Und immer wieder versteckt sich in diesem Wirrwar eine Zeichenfolge, die ich in eine Neue .txt Datei kopieren möchte.
Die Zeichenfolge hat immer 6 Zeichen (Zahlen und Buchstaben) und ist links und rechts mindestens von einem Leerschlag umgeben.
Es sollten nur diese Zeichenfolgen ausgelesen werden, die keine kleinen Buchstaben beinhalten. (Oder kann ich per Batch die kleinen Buchstaben zu grossen machen?)
In der neuen Datei sollten die Zeichenfolgen untereinander aufgelistet werden.
Beispiel:
Bestehende Datei:
o 6080.75s 135.00 0.00
o 6080.75s QW309P 0.00 0.00
o 61.75s 0.00 0.00
AK
v 0.00s 0.00 0.00
v 6152.50s 0.00 56HU7E 0.00
v 6152.50s 235.00 0.00
v 6095.75s 4561Z9 235.00 -15.00
Neue erstellte Datei:
QW309P
56HU7E
4561Z9
Kann mir jemand weiterhelfen?
Liebe Grüsse.
ClownUser
Ich habe sehr lange nach der Lösung zu meinem Problem gesucht. Dann bin ich au dieses Forum hier gestossen.
Folgendes:
Ich habe eine .txt Datei. Dort steh ganz viel wirres Zeug drin. Und immer wieder versteckt sich in diesem Wirrwar eine Zeichenfolge, die ich in eine Neue .txt Datei kopieren möchte.
Die Zeichenfolge hat immer 6 Zeichen (Zahlen und Buchstaben) und ist links und rechts mindestens von einem Leerschlag umgeben.
Es sollten nur diese Zeichenfolgen ausgelesen werden, die keine kleinen Buchstaben beinhalten. (Oder kann ich per Batch die kleinen Buchstaben zu grossen machen?)
In der neuen Datei sollten die Zeichenfolgen untereinander aufgelistet werden.
Beispiel:
Bestehende Datei:
o 6080.75s 135.00 0.00
o 6080.75s QW309P 0.00 0.00
o 61.75s 0.00 0.00
AK
v 0.00s 0.00 0.00
v 6152.50s 0.00 56HU7E 0.00
v 6152.50s 235.00 0.00
v 6095.75s 4561Z9 235.00 -15.00
Neue erstellte Datei:
QW309P
56HU7E
4561Z9
Kann mir jemand weiterhelfen?
Liebe Grüsse.
ClownUser
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 150818
Url: https://administrator.de/forum/per-batch-eine-bestimmte-zeichenfolge-auslesen-150818.html
Ausgedruckt am: 03.05.2025 um 02:05 Uhr
9 Kommentare
Neuester Kommentar
Hallo ClownUser!
String-Verarbeitung ist keine typische Stärke von Batch - daher würde ich hier zu VBS (oder einer Portierung von "sed") greifen - etwa:
Die entscheidende Zeile 9 bedeutet: Suche alle Zeichenketten, die an einer "Wortgrenze" (inkludiert zB auch Zeilenschaltungen) beginnen ("\b"), danach aus dem Bereich "A-Z" sowie "0-9" genau 6 Zeichen enthalten und mit einer weiteren Wortgrenze enden; wolltest Du tatsächlich verlangen, dass die 6 Zeichen von je zumindest einem Leerzeichen begrenzt sind, wären die beiden "\b" durch Leerzeichen zu ersetzen. Ev weitere erlaubte Zeichen (zB Umlaute) könntest Du einfach zwischen den eckigen Klammern hinzufügen ...
Grüße
bastla
String-Verarbeitung ist keine typische Stärke von Batch - daher würde ich hier zu VBS (oder einer Portierung von "sed") greifen - etwa:
Ein = "D:\Deine Datei.txt"
Aus = "D:\Deine neue Datei.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
T = fso.OpenTextFile(Ein).ReadAll
Set rE = New RegExp
rE.Global = True
rE.Pattern = "\b[A-Z0-9]{6}\b"
Set A = fso.CreateTextFile(Aus)
Set Matches = rE.Execute(T)
For Each Match In Matches
A.WriteLine Match
Next
A.Close
Grüße
bastla
Hallo ClownUser!

Es geht hier aber um VBS (obwohl das auch über VBA funktionieren würde) - daher einfach das Script mit dem Dateityp ".vbs" (zB als "D:\HolMirDieStrings.vbs") speichern (falls Du den Windows-Editor "notepad" verwendest, darauf achten, dass als Dateityp beim Speichern "Alle Dateien" eingestellt ist, da ansonsten ein ".txt" angefügt wird) und per Doppelklick oder mit der Zeile
(es würde, da keine Meldungen ausgegeben werden, sogar
genügen) aus einem Batch / von der Kommandozeile starten ...
Grüße
bastla
Ist mein Vorhaben schwer erreichbar mit Batch?
Eher ja ...Ist VBA leicht zu erlernen?
Kommt darauf an, wen Du fragst ... Es geht hier aber um VBS (obwohl das auch über VBA funktionieren würde) - daher einfach das Script mit dem Dateityp ".vbs" (zB als "D:\HolMirDieStrings.vbs") speichern (falls Du den Windows-Editor "notepad" verwendest, darauf achten, dass als Dateityp beim Speichern "Alle Dateien" eingestellt ist, da ansonsten ein ".txt" angefügt wird) und per Doppelklick oder mit der Zeile
cscript //nologo D:\HolMirDieStrings.vbs
D:\HolMirDieStrings.vbs
Grüße
bastla
Hallo ClownUser!
und die Zeile 14 auf
geändert werden.
Grüße
bastla
Ignoriert dieses Script jetzt alle Zeichenfolgen mit kleinen Buchstaben, oder wandelt es die kleinen in grosse um?
Derzeit wird ignoriert - wenn umgewandelt werden soll, müssten die Zeile 9 aufrE.Pattern = "\b[A-Za-z0-9]{6}\b"
A.WriteLine UCase(Match)
Grüße
bastla