per Batch Zeichen in Textzeilen einfügen
Hallo,
ich möchte gerne txt Dateien mit gleichem Aufbau (Satzlänge immer gleich) per Batch wie folgt ändern:
Ursprünglicher Aufbau
43201 10090916150400100002023 4.171117
43201 10090911261700400006320 24.54246666
gewünschter Aufbau
43201 10.09.0916:15:0400100002023 4.171117
43201 10.09.0911:26:1700400006320 24.54246666
Ziel soll es sein, dass an Stelle 13 + 15 ein Punkt (.) und an Stelle 19 + 21 ein Doppelpunkt ( eingesetzt wird.
Hat jemand ein Vorschlag, wie man dies lösen kann? Habe es schon mit dem for-Befehl versucht - leider ohne Erfolg.
Danke im Voraus.
ich möchte gerne txt Dateien mit gleichem Aufbau (Satzlänge immer gleich) per Batch wie folgt ändern:
Ursprünglicher Aufbau
43201 10090916150400100002023 4.171117
43201 10090911261700400006320 24.54246666
gewünschter Aufbau
43201 10.09.0916:15:0400100002023 4.171117
43201 10.09.0911:26:1700400006320 24.54246666
Ziel soll es sein, dass an Stelle 13 + 15 ein Punkt (.) und an Stelle 19 + 21 ein Doppelpunkt ( eingesetzt wird.
Hat jemand ein Vorschlag, wie man dies lösen kann? Habe es schon mit dem for-Befehl versucht - leider ohne Erfolg.
Danke im Voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 125346
Url: https://administrator.de/contentid/125346
Ausgedruckt am: 14.11.2024 um 23:11 Uhr
3 Kommentare
Neuester Kommentar
Moin thorti86,
willkommen im Forum.
Bitte in diesem Seitenarm des Forums kein "Danke im Voraus".
Du kannst die Zeilen im Batch jeweils als eine ganze Zeile einlesen, in eine Variable speichern und dann mit Substring-Funktionen aus Teilen dieser Variablen eine neue Zeile zusammenbraten.
Lösungsskizze:
Jeweils ein %line:~0,12% ist zu lesen als "Teilstring von %line% von Pos. 0 Länge 2 Zeichen.
Kannst ja mal, wenn der Ansatz so funktioniert, das Skript posten, meins ist nur eine Skizze.
Grüße
Biber
willkommen im Forum.
Bitte in diesem Seitenarm des Forums kein "Danke im Voraus".
Du kannst die Zeilen im Batch jeweils als eine ganze Zeile einlesen, in eine Variable speichern und dann mit Substring-Funktionen aus Teilen dieser Variablen eine neue Zeile zusammenbraten.
Lösungsskizze:
@echo off & setlocal
FOF /F "delims=" %%i in ("D:\EineDatei.txt") do set "line=%%" & call:ProcessLine
goto :eof
:processline In %line% ist je eine ganze Zeile
Echo %line:~0,12%.%%line:~13,2%.%line:~15,2% usw.
goto :eof
Jeweils ein %line:~0,12% ist zu lesen als "Teilstring von %line% von Pos. 0 Länge 2 Zeichen.
Kannst ja mal, wenn der Ansatz so funktioniert, das Skript posten, meins ist nur eine Skizze.
Grüße
Biber
Hallo thorti86 und willkommen im Forum!
Etwa so (allerdings auf Basis Deiner Beispiele und nicht Deiner Angabe, daher Punkte an Position 9 und 11 etc):
Soferne Du die ursprüngliche Datei (mit Zusatz ".bak") als Sicherung nicht benötigst, kannst Du die beiden Doppelpunkte in Zeile 10 entfernen.
Grüße
bastla
[Edit] @Biber: Was machst Du denn um diese Zeit hier? Und warum bin ich schon wieder so langsam? Nö, sag' lieber nix ... [/Edit]
Etwa so (allerdings auf Basis Deiner Beispiele und nicht Deiner Angabe, daher Punkte an Position 9 und 11 etc):
@echo off & setlocal
set "Datei=D:\Dein.txt"
set "Bak=bak"
set /p Zeile1=<"%Datei%"
if "%Zeile1:~8,1%"=="." echo Datei bereits im richtigen Format & goto :eof
move "%Datei%" "%Datei%.%Bak%">nul
for /f "usebackq delims=" %%i in ("%Datei%.%Bak%") do set "Zeile=%%i" & call :ProcessLine
::del "%Datei%.%Bak%"
goto :eof
:ProcessLine
>>"%Datei%" echo %Zeile:~,8%.%Zeile:~8,2%.%Zeile:~10,4%:%Zeile:~14,2%:%Zeile:~16%
goto :eof
Grüße
bastla
[Edit] @Biber: Was machst Du denn um diese Zeit hier? Und warum bin ich schon wieder so langsam? Nö, sag' lieber nix ... [/Edit]