TXT Datei verändern und neu speichern per Batch (Teil2)
Hallo Leute,
bastla hat mir mir folgendem Code mal sehr geholfen!
____________________________________________________________________________________________________________
Meine damalige Frage war folgende:
Hallo Leute,
ich habe ettliche Transaktionsdateien welche täglich in ein Verzeichnis kopiert werden.
00000001.TXT bis 0000000N.TXT
Dateiinhalt ist jeweils eine Zeile
Ich möchte das jeweils bis zum Delimiter "|" der Wert durch eine feste Feldbreite z.B. 10 Zeichen ersetzt wird.
Den Delimiter "|" brauche ich nicht mehr in der neuen Datei. So wie die nächste Zeile sollte das Ergebnis sein.
0815----------2612---------1-------------- 4-------------21------------1---------------1147628 usw....
123456789012345678901234567890134567890123456789012345678901234567890 <<< Diese Zeile dient nur zur Orientierung
Die Bindestriche sind nur zum verdeutlichen da. In der neuen Datei sollen sie nicht sein.
___________________________________________________________________________________________________________
Ich habe jetzt bei einem anderen Kunden das Problem, dass er meine Ausgabedatei mit unterschiedlichen Feldbreiten braucht. Gibt es auch eine Möglichkeit unterschiedliche Feldlängen auszugeben?
Bis zum 1. Delimiter Feldbreite von 30 Zeichen
Bis zum 2. Delimiter Feldbreite von 15 Zeichen
Bis zum 3. Delimiter Feldbreite von 8 Zeichen
usw.
Danke und Gruß
Roland Reinhart
bastla hat mir mir folgendem Code mal sehr geholfen!
@echo off & setlocal
set "PadTemp=%temp%\Pad.vbs"
set Breite=10
set "Quelle=C:\Live\00000*.txt"
set "Ziel=C:\Live"
set "Neu=Neu-"
echo Felder=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0),1).ReadAll,"|")>"%PadTemp%"
echo For i=0 To UBound(Felder):Zeile=Zeile^&Left(Trim(Felder(i))^&Space(%Breite%),%Breite%):Next:WScript.Echo Zeile>>"%PadTemp%"
for %%i in ("%Quelle%") do cscript //nologo "%PadTemp%" "%%i" >"%Ziel%\%Neu%%%~nxi%"
del "%PadTemp%"
Meine damalige Frage war folgende:
Hallo Leute,
ich habe ettliche Transaktionsdateien welche täglich in ein Verzeichnis kopiert werden.
00000001.TXT bis 0000000N.TXT
Dateiinhalt ist jeweils eine Zeile
IA| 50 |G |
Ich möchte das jeweils bis zum Delimiter "|" der Wert durch eine feste Feldbreite z.B. 10 Zeichen ersetzt wird.
Den Delimiter "|" brauche ich nicht mehr in der neuen Datei. So wie die nächste Zeile sollte das Ergebnis sein.
0815----------2612---------1-------------- 4-------------21------------1---------------1147628 usw....
123456789012345678901234567890134567890123456789012345678901234567890 <<< Diese Zeile dient nur zur Orientierung
Die Bindestriche sind nur zum verdeutlichen da. In der neuen Datei sollen sie nicht sein.
___________________________________________________________________________________________________________
Ich habe jetzt bei einem anderen Kunden das Problem, dass er meine Ausgabedatei mit unterschiedlichen Feldbreiten braucht. Gibt es auch eine Möglichkeit unterschiedliche Feldlängen auszugeben?
Bis zum 1. Delimiter Feldbreite von 30 Zeichen
Bis zum 2. Delimiter Feldbreite von 15 Zeichen
Bis zum 3. Delimiter Feldbreite von 8 Zeichen
usw.
Danke und Gruß
Roland Reinhart
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 71611
Url: https://administrator.de/forum/txt-datei-veraendern-und-neu-speichern-per-batch-teil2-71611.html
Ausgedruckt am: 23.04.2025 um 19:04 Uhr
2 Kommentare
Neuester Kommentar
Hallo reinhr!
Mit dem folgenden ergänzten Batch sollte das eigentlich klappen:
Wichtig ist dabei, in der Zeile "echo Breite=Array(...)" für jedes einzelne Feld die gewünschte Breite anzugeben.
Grüße
bastla
Mit dem folgenden ergänzten Batch sollte das eigentlich klappen:
@echo off & setlocal
set "PadTemp=%temp%\Pad.vbs"
set "Quelle=C:\Live\00000*.txt"
set "Ziel=C:\Live"
set "Neu=Neu-"
echo Breite=Array(30,15,8,5,5,5,12,15,6,10,4,9,3,4,4,4,4,4,7)>"%PadTemp%"
echo Felder=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0),1).ReadAll,"|")>>"%PadTemp%"
echo For i=0 To UBound(Felder):Zeile=Zeile^&Left(Trim(Felder(i))^&Space(Breite(i)),Breite(i)):Next:WScript.Echo Zeile>>"%PadTemp%"
for %%i in ("%Quelle%") do cscript //nologo "%PadTemp%" "%%i" >"%Ziel%\%Neu%%%~nxi%"
del "%PadTemp%"
Grüße
bastla