Hallo Forumshelfer,
ich stehe vor folgender Herausforderung:
In jeder Zeile einer Datei (Test.txt) soll geprüft werden, ob die Textlänge (max 4) eines Wertes zwischen dem 12. und 13. Feldbegrenzer (Semikolon) kleiner 4 ist.
Ist der Wert <4 soll dieser am Ende mit Leerzeichen aufgefüllt werden.
Wie kann ich das als Batch abbilden?
Viele Grüße
Chris
Seite 1 von 1
auslesen und ergänzen per Batch
Anzeige
#2
geschrieben 28. August 2023 - 20:11
Wie viele Semikolons stehen in einer Zeile maximal?
Hast du denn schon etwas angefangen, oder machen soll das alles jemand anderes tun?
gib mal ein Beispiel, damit man sieht was du möchtest...
Damit füllst du mit Leerzeichen auf eine Länge von 4 auf:
Hast du denn schon etwas angefangen, oder machen soll das alles jemand anderes tun?
gib mal ein Beispiel, damit man sieht was du möchtest...
Damit füllst du mit Leerzeichen auf eine Länge von 4 auf:
set "output=%input% " set "output=%output:~0,4%"
#3
geschrieben 28. August 2023 - 21:57
Angefangen habe ich noch nicht, da ich im Moment noch gar nicht weis wie das überhaupt funktionieren könnte.
Es stehen maximal 15 Semikolons in einer Zeile
Die Anzahl der Zeilen ändert sich, da die Daten täglich als txt exportiert werden und anschließend in ein anderes Programm importiert werden sollen.
Beispiel:
IST
05;2;2023;3190;000001;0000000561AA86;1;02;08;;;2222;AA;000;;
05;2;2023;3190;000002;0000000561XC86;1;01;08;;;2222;DDGG;000;;
05;2;2023;3190;000003;0000000561FF86;1;02;08;;;2222;XXF;000;;
05;2;2023;3190;000004;0000000561RE86;1;02;08;;;2222;DDCC;000;;
05;2;2023;3190;000005;0000000561KL86;1;02;08;;;2222;FF;000;;
SOLL
05;2;2023;3190;000001;0000000561AA86;1;02;08;;;2222;AA ;000;;
05;2;2023;3190;000002;0000000561XC86;1;01;08;;;2222;DDGG;000;;
05;2;2023;3190;000003;0000000561FF86;1;02;08;;;2222;XXF ;000;;
05;2;2023;3190;000004;0000000561RE86;1;02;08;;;2222;DDCC;000;;
05;2;2023;3190;000005;0000000561KL86;1;02;08;;;2222;FF ;000;;
Sollte dies zu aufwendig sein, würde ich eine Lösung in Excel finden.
Es stehen maximal 15 Semikolons in einer Zeile
Die Anzahl der Zeilen ändert sich, da die Daten täglich als txt exportiert werden und anschließend in ein anderes Programm importiert werden sollen.
Beispiel:
IST
05;2;2023;3190;000001;0000000561AA86;1;02;08;;;2222;AA;000;;
05;2;2023;3190;000002;0000000561XC86;1;01;08;;;2222;DDGG;000;;
05;2;2023;3190;000003;0000000561FF86;1;02;08;;;2222;XXF;000;;
05;2;2023;3190;000004;0000000561RE86;1;02;08;;;2222;DDCC;000;;
05;2;2023;3190;000005;0000000561KL86;1;02;08;;;2222;FF;000;;
SOLL
05;2;2023;3190;000001;0000000561AA86;1;02;08;;;2222;AA ;000;;
05;2;2023;3190;000002;0000000561XC86;1;01;08;;;2222;DDGG;000;;
05;2;2023;3190;000003;0000000561FF86;1;02;08;;;2222;XXF ;000;;
05;2;2023;3190;000004;0000000561RE86;1;02;08;;;2222;DDCC;000;;
05;2;2023;3190;000005;0000000561KL86;1;02;08;;;2222;FF ;000;;
Sollte dies zu aufwendig sein, würde ich eine Lösung in Excel finden.
#4
geschrieben 29. August 2023 - 09:39
Die 3 Semikolons nacheinander machen für mich Probleme, deswegen habe ich eine Überprüfung der Zeilenanzahl hinzugefügt
@echo off&setlocal EnableDelayedExpansion set "InputFile=test.txt" set "outputFile=test_out.txt" set /a in_zeile=0, out_zeile=0 if not exist %InputFile% goto :eof if exist %OutputFile% del %OutputFile% for /f %%a in ('findstr /c:";" %InputFile%') do set /a in_zeile+=1 for /f "tokens=1-15 delims=;" %%a in ('findstr /c:";;;" %InputFile%') do ( set /a out_zeile+=1 set "x=%%k " echo %%a;%%b;%%c;%%d;%%e;%%f;%%g;%%h;%%i;;;%%j;!x:~0,4!;%%l;%%m;%%n>>%outputFile% ) if %in_zeile% EQU %out_zeile% goto :eof color 04 echo Anzahl Zeilen unterschiedlich! pause>NUL
Thema verteilen:
Seite 1 von 1