reinhr
Goto Top

TXT Datei verändern und neu speichern per Batch (Teil2)

Hallo Leute,

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

Content-Key: 71611

Url: https://administrator.de/contentid/71611

Ausgedruckt am: 28.03.2024 um 14:03 Uhr

Mitglied: bastla
bastla 22.10.2007 um 20:09:49 Uhr
Goto Top
Hallo reinhr!

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%"  
Wichtig ist dabei, in der Zeile "echo Breite=Array(...)" für jedes einzelne Feld die gewünschte Breite anzugeben.

Grüße
bastla
Mitglied: reinhr
reinhr 23.10.2007 um 13:28:03 Uhr
Goto Top
Hallo Bastla,

einfach genial! Genau so sollte es sein - funktioniert einwandfrei.
Allerdings kamen bei meinem Kunden weitere zwei Probleme auf,
die poste ich aber seperat als:

TXT Datei verändern und neu speichern per Batch (Teil3)

Vielen Dank nochmal und
Gruß

Roland