Spalten in einer Textdatei verschieben
Hallo Forum,
ich habe lange gesucht und "herumexperimentiert"...leider hat es nicht geklappt.
Ich habe folgendes vor:
Eine Textdatei die wie folgt aufgebaut ist soll umgestellt werden in eine neue Datei.
Dabei darf die Stellenanzahl (also der Aufbau) nicht verändert werden.
Es soll also der Text ab der Stelle 74-87 ausgeschnitten und an Stelle 15 eingefügt werden.
Die Punkte sollen die Blanks darstellen (irgendwie schaut der fertige Thread anders aus als in der Entwurfsmaske???). Die Stellenzahl jeder Zeile ist gleich.
Ich hoffe ich konnte einigermassen rüberbringen was ich machen möcht...hier noch ein Beispiel...
Original
STRF-COMP020...C960000-0000..................00000044567......KAPPN.....Marinath.....
SWIP-127259.....C3320226-02...................00000034567......SCHEE.....Ersatz Glass.
SWIP-125424.....C3322400-01...................00000014567......SCHEE..................
SWIP-125424.....C340349.......................00000024567......SCHEE..................
usw.
Gewünschtes Ergebniss
STRF-COMP-020.Marinath.......C960000-0000..................00000044567......KAPPN.....
SWIP-127259...Ersatz Glass...C3320226-02...................00000034567......SCHEE.....
SWIP-125424..................C3322400-01...................00000014567......SCHEE.....
usw...
wie lässt sich oder lässt sich soetwas überhaupt per Batch lösen???
Gruss und DANKE
Richard
ich habe lange gesucht und "herumexperimentiert"...leider hat es nicht geklappt.
Ich habe folgendes vor:
Eine Textdatei die wie folgt aufgebaut ist soll umgestellt werden in eine neue Datei.
Dabei darf die Stellenanzahl (also der Aufbau) nicht verändert werden.
Es soll also der Text ab der Stelle 74-87 ausgeschnitten und an Stelle 15 eingefügt werden.
Die Punkte sollen die Blanks darstellen (irgendwie schaut der fertige Thread anders aus als in der Entwurfsmaske???). Die Stellenzahl jeder Zeile ist gleich.
Ich hoffe ich konnte einigermassen rüberbringen was ich machen möcht...hier noch ein Beispiel...
Original
STRF-COMP020...C960000-0000..................00000044567......KAPPN.....Marinath.....
SWIP-127259.....C3320226-02...................00000034567......SCHEE.....Ersatz Glass.
SWIP-125424.....C3322400-01...................00000014567......SCHEE..................
SWIP-125424.....C340349.......................00000024567......SCHEE..................
usw.
Gewünschtes Ergebniss
STRF-COMP-020.Marinath.......C960000-0000..................00000044567......KAPPN.....
SWIP-127259...Ersatz Glass...C3320226-02...................00000034567......SCHEE.....
SWIP-125424..................C3322400-01...................00000014567......SCHEE.....
usw...
wie lässt sich oder lässt sich soetwas überhaupt per Batch lösen???
Gruss und DANKE
Richard
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 101791
Url: https://administrator.de/forum/spalten-in-einer-textdatei-verschieben-101791.html
Ausgedruckt am: 11.04.2025 um 08:04 Uhr
11 Kommentare
Neuester Kommentar
... und falls Du es doch öfter brauchen solltest, dann etwa so:
Grüße
bastla
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
@echo off & setlocal
set "Ein=D:\Original.txt"
set "Aus=D:\Ergebnis.txt"
if exist "%Aus%" del "%Aus%"
for /f "usebackq delims=" %%i in ("%Ein%") do set "Zeile=%%i" & call :ProcessLine
goto :eof
:ProcessLine
>> "%Aus%" echo %Zeile:~,14%%Zeile:~73,14%%Zeile:~14,59%%Zeile:~87%
bastla
Hallo RichardB!
Eine Anpassung der Zeile 10 sollte das ja "abfangen" können, etwa:
Zur Bildung von "Substrings" (kannst Du auch unter "set /?" nachlesen) ist zunächst die Anzahl der "zu überspringenden" Zeichen und danach die Anzahl der zu verwendenden Zeichen anzugeben - mit
werden demnach die ersten beiden Zeichen übersprungen und die folgenden 14 Zeichen verwendet. Wenn der zweite Wert nicht angegeben wird, bedeutet dies: "nimm alle restlichen Zeichen bis zum Ende".
Grüße
bastla
Eine Anpassung der Zeile 10 sollte das ja "abfangen" können, etwa:
>> "%Aus%" echo %Zeile:~2,14%%Zeile:~75,14%%Zeile:~16,59%%Zeile:~89%
%Zeile:~2,14%
Grüße
bastla
Hallo RichardB!
Na gut, dann setzen wir vorübergehend die Codepage auf 1252 und erteilen der 1. Zeile eine Sonderbehandlung (wobei Du die Positionen eben so anpassen musst, dass die richtigen Zeichen ausgegeben werden - "blind" kann ich das leider nicht):
Grüße
bastla
Na gut, dann setzen wir vorübergehend die Codepage auf 1252 und erteilen der 1. Zeile eine Sonderbehandlung (wobei Du die Positionen eben so anpassen musst, dass die richtigen Zeichen ausgegeben werden - "blind" kann ich das leider nicht):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off & setlocal
set "Ein=D:\Original.txt"
set "Aus=D:\Ergebnis.txt"
for /f "tokens=3 delims=:. " %%i in ('chcp') do set "CP=%%i"
chcp 1252>nul
set /p Zeile=<"%Aus%"
> "%Aus%" echo %Zeile:~2,14%%Zeile:~75,14%%Zeile:~16,59%%Zeile:~89%
for /f "usebackq skip=1 delims=" %%i in ("%Ein%") do set "Zeile=%%i" & call :ProcessLine
chcp %CP%>nul
goto :eof
:ProcessLine
>> "%Aus%" echo %Zeile:~,14%%Zeile:~73,14%%Zeile:~14,59%%Zeile:~87%
bastla