reinhr
Goto Top

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

Hallo Leute,

folgender Code löst unten stehendes Problem:

@echo off & setlocal
set "PadTemp=%temp%\Pad.vbs"  
set "Quelle=C:\Live\00000*.txt"  
set "Ziel=C:\Live"  
set "Neu=Neu-"  
echo Breite=Array(5,5,10,5,5,5,8)>"%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%"  
Ettliche Transaktionsdateien welche täglich in ein Verzeichnis kopiert werden
(00000001.TXT bis 0000000N.TXT) haben folgenden Inhalt.

Dateiinhalt ist jeweils eine Zeile
0815|2612| 1 | 4 | 21 | 18|23.10.2007 13:40:33

nach der Konvertierung

Der Delimiter "|" wurde gelöscht und durch variable Feldbreiten ersetzt.
Das Ergebnis mit obigen Code:
0815-2612-1---------4----21---18---23.10.20
Die Bindestriche sind nur zum verdeutlichen da. In der neuen Datei sind sie nicht.

Neues Problem:
1. Problem
Der 3. Wert stellt eine Stückzahl dar. Es soll immer .00 angehängt werden.
2. Problem
Der 7. Wert stellt das Datum dar. Es soll immer im Format YYYYMMDD sein.


nach der Konvertierung sollte das Ergebnis so aussehen:
0815-2612-1.00------4----21---18---20071023
Die Bindestriche sind nur zum verdeutlichen da. In der neuen Datei sind sie nicht.


Kann mir hier jemand helfen?
Danke und Gruß

Roland

Content-Key: 71701

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

Printed on: April 24, 2024 at 23:04 o'clock

Member: bastla
bastla Oct 23, 2007 at 15:00:40 (UTC)
Goto Top
Hallo reinhr!

@echo off & setlocal
set "PadTemp=%temp%\Pad.vbs"  
set "Quelle=C:\Live\00000*.txt"  
set "Ziel=C:\Live"  
set "Neu=Neu-"  
echo Breite=Array(5,5,10,5,5,5,8)>"%PadTemp%"  

echo Felder=Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0),1).ReadAll,"|")>>"%PadTemp%"  

echo Felder(2)=Trim(Felder(2))^&".00">>"%PadTemp%"  
echo D=CDate(Felder(6)):Felder(6)=Year(D)^&Right("0"^&Month(D),2)^&Right("0"^&Day(D),2)>>"%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%"  
Bitte beachten: Da die Zählung der Felder bei 0 beginnt, muss für die Felder 3 und 7 in den beiden neuen Zeilen jeweils "Felder(2)" und "Felder(6)" verwendet werden.

Grüße
bastla
Member: reinhr
reinhr Oct 23, 2007 at 15:35:34 (UTC)
Goto Top
Hallo Bastla,

einfach genial - da fällt mir nichts mehr ein!!!!

Vielen, vielen Dank!!

Gruß

Roland