WinFuture-Forum.de: auslesen und ergänzen per Batch - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

auslesen und ergänzen per Batch


#1 Mitglied ist offline   Chris9876 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 28. August 23
  • Reputation: 0

geschrieben 28. August 2023 - 18:30

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
0

Anzeige



#2 Mitglied ist offline   MasterP82 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 30. Juni 12
  • Reputation: 10

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:
set "output=%input%    "
set "output=%output:~0,4%"

0

#3 Mitglied ist offline   Chris9876 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 28. August 23
  • Reputation: 0

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.
0

#4 Mitglied ist offline   MasterP82 

  • Gruppe: aktive Mitglieder
  • Beiträge: 221
  • Beigetreten: 30. Juni 12
  • Reputation: 10

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

0

#5 Mitglied ist offline   Chris9876 

  • Gruppe: Mitglieder
  • Beiträge: 3
  • Beigetreten: 28. August 23
  • Reputation: 0

geschrieben 29. August 2023 - 13:07

Super und Danke! :thumbsup:
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0