So kann man es in einer Batchdatei machen. Die Eingangsdatei heißt im
Beispiel "von.txt", die Ergebnisdatei "nach.txt". Dieses Beispiel
verarbeitet die ersten 5 Spalten. Groß- und Kleinschreibung der
Variablen a, A, B, C,... ist zu beachten!:
1 | SETLOCAL ENABLEDELAYEDEXPANSION
|
2 | copy nul nach.txt
|
3 | for /f %%a in (von.txt) do (
|
4 | for /f "tokens=1-5 delims=:" %%A in ("%%a") do (
|
5 | set tmp=%%A&set tmp=!tmp:~,6!&set result=!tmp!
|
6 | set tmp=%%B&set tmp=!tmp:~,4!&set result=!result!:!tmp!
|
7 | set tmp=%%C&set tmp=!tmp:~,4!&set result=!result!:!tmp!
|
8 | set tmp=%%D&set tmp=!tmp:~,4!&set result=!result!:!tmp!
|
9 | set tmp=%%E&set tmp=!tmp:~,6!&set result=!result!:!tmp!
|
10 | )
|
11 | echo !result!>>nach.txt
|
12 | )
|
13 | ENDLOCAL
|
Bei Erweiterung auf 30 Spalten sind nach 'Z' die im Code folgenden
Zeichen zu verwenden:
1 | set tmp=%%Z&set tmp=!tmp:~,6!&set result=!result!:!tmp!
|
2 | set tmp=%%[&set tmp=!tmp:~,6!&set result=!result!:!tmp!
|
3 | set tmp=%%\&set tmp=!tmp:~,6!&set result=!result!:!tmp!
|
4 | set tmp=%%]&set tmp=!tmp:~,6!&set result=!result!:!tmp!
|
5 | set tmp=%%^^&set tmp=!tmp:~,6!&set result=!result!:!tmp!
|
Enthält eine Spalte weniger Zeichen als die Begrenzung erlaubt, bleibt
der Wert unverändert.
Gruß
WIRO