Batch: Mit einer For-Schleife in einem Datensatz nach einer variablen Zeichenkette suchen
Guten Morgen zusammen,
ich bin gerade dabei mir ein kleines Batch-Programm zu schreiben, dass mir einen vorgegeben Datensatz nach einer variablen Zeichenkette durchsucht.
Leider bin ich neu in diesem Thema und tue mir noch etwas schwer mit den For-Schleifen und vor allem den verschachtelten, daher hoffe ich auf eure Hilfe.
Es geht um einen Datensatz, der bis zu 500 Einzelsätze enthält die immer wie folgt aufgebaut sind:
Satzaufbau: Zeichen
0 - 3 = einmalige Nummern die den Satz identifiziert (4 Stellen)
4 - 43 = Buchstaben (40 Stellen)
44 - 50 = Nummer (7 Stellen)
51 - 66 = Passwort (dieses ist variable zwischen 6 - 16 Stellen)
Das Satzende Kriterium ist immer "0A" hexadezimal.
1. Aufgabe:
Ich muss aus dem Datensatz den Satz heraussuchen, der mit einer vorher vorgegeben Nummer z.B. 1234 in den ersten 4 Zeichen übereinstimmt.
Der zugehörige Satz wird dann in eine Logdatei.txt geschrieben.
2. Aufgabe:
Wieder das gleiche, nur diesmal wird der übereinstimmende Satz nicht in eine Datei geschrieben, sondern es wird das Passwort (Stelle 51-66) überschrieben.
Danke schon mal im voraus, ich hoffe mir kann jemand dabei helfen.
ich bin gerade dabei mir ein kleines Batch-Programm zu schreiben, dass mir einen vorgegeben Datensatz nach einer variablen Zeichenkette durchsucht.
Leider bin ich neu in diesem Thema und tue mir noch etwas schwer mit den For-Schleifen und vor allem den verschachtelten, daher hoffe ich auf eure Hilfe.
Es geht um einen Datensatz, der bis zu 500 Einzelsätze enthält die immer wie folgt aufgebaut sind:
Satzaufbau: Zeichen
0 - 3 = einmalige Nummern die den Satz identifiziert (4 Stellen)
4 - 43 = Buchstaben (40 Stellen)
44 - 50 = Nummer (7 Stellen)
51 - 66 = Passwort (dieses ist variable zwischen 6 - 16 Stellen)
Das Satzende Kriterium ist immer "0A" hexadezimal.
1. Aufgabe:
Ich muss aus dem Datensatz den Satz heraussuchen, der mit einer vorher vorgegeben Nummer z.B. 1234 in den ersten 4 Zeichen übereinstimmt.
Der zugehörige Satz wird dann in eine Logdatei.txt geschrieben.
2. Aufgabe:
Wieder das gleiche, nur diesmal wird der übereinstimmende Satz nicht in eine Datei geschrieben, sondern es wird das Passwort (Stelle 51-66) überschrieben.
Danke schon mal im voraus, ich hoffe mir kann jemand dabei helfen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 399984
Url: https://administrator.de/forum/batch-mit-einer-for-schleife-in-einem-datensatz-nach-einer-variablen-zeichenkette-suchen-399984.html
Ausgedruckt am: 07.06.2025 um 12:06 Uhr
5 Kommentare
Neuester Kommentar

Die 1. Aufgabe löst du einfach mit findstr.exe, entweder mit der /B option oder per /R (dem Standard-RegEx-Mode) und dem ^ Anker am Anfang.
Die 2.Aufgabe ist schon schwieriger da ein Ändern per Batch ein Neuschreiben der Datei bedeutet.
per Batch das Standard Zeilenende CR/LF = 0xD,0xA zu verhindern und nur LF 0xA zu schreiben,
ist schon deutlich schwieriger und ggfs garnicht notwendig?
Wenn die Datensätze ihre Ordnung nicht behalten müssen:
Siehe Set /? , For /? insbesondere /f option.
Quasi fixed length Record Handling per Batch is IMO tatsächlich anachronistisch.
Gruß
LotPings
findstr "^1234" DateiName.Ext >>Datei.Log
Die 2.Aufgabe ist schon schwieriger da ein Ändern per Batch ein Neuschreiben der Datei bedeutet.
per Batch das Standard Zeilenende CR/LF = 0xD,0xA zu verhindern und nur LF 0xA zu schreiben,
ist schon deutlich schwieriger und ggfs garnicht notwendig?
Wenn die Datensätze ihre Ordnung nicht behalten müssen:
lesen wie 1.
schreiben wie 1. mit /V option und den geänderten Satz am Ende anhängen, ggs Datei anschließend sortieren.
per Substring in Standardvariable (mit Zero Offset) das Password austauschen.
Siehe Set /? , For /? insbesondere /f option.
Quasi fixed length Record Handling per Batch is IMO tatsächlich anachronistisch.
Gruß
LotPings