Zeichenkette aus txt-Datei auslesen, teilen, und mit Trennzeichen versehen

kkboy94
Goto Top

Hey Leute

Ich weiß, das ist mein erster Beitrag
aber ich dachte es wär die beste idee, direkt hier zu Fragen, denn hier wurde mir schon oft geholfen.

Mein Problem sieht folgendermaßen aus:

Ich habe mir eine batch Datei geschrieben, die einen Wert aus der Registry ausliest und in einer Textdatei speichert.

Nun ist dieser Wert zusammenhängend und hat insgesamt 20 Zeichen die in jeweils 4er-Häppchen zerlegt werden sollen. Die Häppchen sollen dann durch Bindestriche getrennt werden.

Als Beispiel mal einen Wert, wie er aussehen könnte:
44T2SL8S8DDTYQ8E155F
am Ende soll dann sowas da stehen
44T2-SL8S-8DDT-YQ8E-155F

Ich hoffe, dass ihr mir helfen könnt.

Danke schonmal im Voraus


MfG Karsten

Content-Key: 144691

Url: https://administrator.de/contentid/144691

Ausgedruckt am: 05.07.2022 um 05:07 Uhr

Mitglied: bastla
bastla 12.06.2010 um 00:15:05 Uhr
Goto Top
Hallo kkboy94!

Eigentlich sollte es nicht nötig sein, eine Textdatei zu erstellen - poste doch bitte (unter "<code>"- "</code>"-Tags) Deinen bisherigen Batch ...
Um aber konkret auf Deine Frage zu antworten: Unter der Annahme, dass der angesprochene String in der ersten Zeile der Datei steht, könntest Du die gewünschte Formatierung so erhalten:
Grüße
bastla
Mitglied: kkboy94
kkboy94 12.06.2010 um 11:53:51 Uhr
Goto Top
Erst einmal Danke für die schnelle Hilfe.
Ich werds mal ausprobieren.

Da die komplette Batch relativ lang ist, stelle ich hier nur mal den betreffenden Teil rein.
Hoffe ihr könnt damit was anfangen.

PS:ch hab mir heut morgen dann auch nochmal Gedanken gemacht. Es stimmt ja schon, dass es unsinnig wäre eine Textdatei zu erstellen, aus zulesen, verändern und wieder ab zupspeichern.


MfG Karsten

EDIT:Wie würde das alles aussehen, wenn in der Textdatei noch mehrere Zeilen vor dem zu bearbeitenden String stehen?
Nachher soll der bearbeitete Wert wieder an die txt zurückgegeben werden
EDIT2:
Was bedeuten diese Zeilen? Manche Sachen sind mir noch unklar (Der Operator bei "set /p", und die vielen %, ~ und die Werte (4; 4,4; 8,4 usw...))

EDIT3:

Das "@echo off" hab ich bei meinen Batchs auch immer vorne dran stehen, aber was hat setlocal für eine Bedutung?
Mitglied: bastla
bastla 12.06.2010 um 16:18:48 Uhr
Goto Top
Hallo kkboy94!

Könntest Du, sobald das gesamte Konzept fertig ist, Dein Vorhaben vollständig darstellen (jetzt sieht es ja eher nach "Suchen / Ersetzen" aus, wobei ich nicht wüsste, nach welchem Begriff zu suchen wäre)?

In der Zwischenzeit sollte die Onlinehilfe
Dir vielleich schon erste Anhaltspunkte zu Deinen Fragen liefern.

Was das "set /p" anlangt: Damit wird eine Eingabe, die mit Enter abgeschlossen wird, entgegengenommen und in der angegebenen Variable gespeichert - in diesem Fall kommt die "Eingabe" eben aus einer Datei (konkret: aus dem Beginn der Datei bis zum ersten Enter = aus der ersten Zeile der Datei) ...

Grüße
bastla
Mitglied: kkboy94
kkboy94 12.06.2010 um 16:31:19 Uhr
Goto Top
Also...
Der Sinn meines Vorhaben ist folgender:
Es soll eib Registrierungsschlüssel aus der Registry ausgelsen werden, in Stücke geteilt und in eine Textdatei abgelegt werden, damit man bei Neuinstallation den gleichen Schlüssel wieder benutzen kann.
Die Textdatei sollte dann so in etwa aussehen:
Mitglied: bastla
bastla 12.06.2010 um 17:13:48 Uhr
Goto Top
Hallo kkboy94!
Grüße
bastla

P.S.: Die Verwendung von %cd% am Beginn einer Pfadangabe ist witzlos, da der aktuelle Pfad ja ohnehin schon %cd% ist ...
Mitglied: kkboy94
kkboy94 12.06.2010 um 21:49:07 Uhr
Goto Top
Hat super funktioniert. Danke für die Hilfe. Funktioniert 1a
Den Teil habe ich immer noch nicht verstanden.
So wie ich mir das nun denke ist dieser Teil ":~,4" für den ersten 4er-Block zuständig.
Demnach müsste ":~4,4" doch für den 2. 4er-Block da sein. Aber der zweite 4er Block hat doch das 8. Zeichen als letztes. Also warum ist der Teil dann nicht ":~8"
Das müsste mir noch erklärt werden.
Ausprobiert hab ichs schon --> es ist so wies sein sollte, aber ich verstehs halt nich.


MfG Karsten
Mitglied: bastla
bastla 13.06.2010 um 00:17:17 Uhr
Goto Top
Hallo kkboy94!

Die beiden Werte bedeuten
  • Offset (wieviele Zeichen vom Anfang weg sollen übersprungen werden (beim ersten Teilstring steht nix vor dem Komma, was mit 0 oder mit "Fang ganz vorne an!" gleichzusetzen ist)
  • Zeichenanzahl (daher immer 4)

Grüße
bastla
Mitglied: kkboy94
kkboy94 13.06.2010 um 11:03:42 Uhr
Goto Top
Ahh ok gut, danke für die Hilfe bastla.


MfG Karsten