steven123
Goto Top

BATCH-Datei (Änderung von Daten in Textdatei) funktioniert ab 10 Datensätzen im File nicht mehr

Hallo Zusammen,

ich hatte vor Kurzem eine Frage im Forum bzgl. einer Korrektur bzw. Ergänzung von Daten in einer Textdatei.

User BASTLA hat mir daraufhin den nachfolgenden Code geschrieben, der auch wunderbar funktioniert.

echo off & setlocal
rename C:\.........\ab-U0348D.005 XX.txt

set "Ein=C:\.........\XX.txt"
set "Aus=C:\.........\PVP_%date:~0,2%%date:~3,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%_05230674.txt"
set "Von=P02 A"
set "Nach=P02 # A"

del "%Aus%" 2nul
for /f "usebackq delims=" %%i in ("%Ein%") do (
set "Satz=%%i"
setlocal enabledelayedexpansion
>>"%Aus%" echo !Satz:%Von%=%Nach%!
endlocal
)
del C:\.........\XX.txt


Bislang waren in den jeweiligen Textfiles lediglich bis zu 9 Datensätze. Seit gestern habe ich auch Textfiles mit
9 Datensätzen.

Ab 10 Datensätze in der Datei funktionieren die Umwandlungen (Umbenennung und Ergänzung) nicht mehr.

Kann mir jemand in diesem Zusammenhang weiterhelfen?

Danke und Gruß

Content-ID: 276958

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

Ausgedruckt am: 23.11.2024 um 10:11 Uhr

bastla
bastla 10.07.2015 um 13:00:50 Uhr
Goto Top
Hallo Steven123!

Schwer nachvollziehbar ...

Kannst Du eine (gerne auch anonymisierte) Beispieldatei posten (als Code formatiert)?

Grüße
bastla
Steven123
Steven123 10.07.2015 um 20:58:44 Uhr
Goto Top
Hallo bastla,

ich habe Dir eine PM geschickt.

Ich habe eine Beispieldatei zusammengestellt, mit Hilfe derer man das Phänomen nachstellen kann.

Gruß und Dank
bastla
Lösung bastla 19.07.2015, aktualisiert am 20.07.2015 um 20:27:02 Uhr
Goto Top
Hallo Steven123!

Das "Phänomen" beruht auf der Tatsache, dass die Textdatei keine Zeilenschaltungen enthält und daher eine einzige Zeile mit 7.965 Bytes (= Zeichen) bei 9 Datensätzen und 8.850 Bytes bei 10 Datensätzen darstellt - die Variablenlänge ist in Batch aber auf 8.192 Zeichen begrenzt ...

Wenn VBS eine Option wäre, könntest Du das etwa so lösen:
Set fso = CreateObject("Scripting.FileSystemObject")  
Ein = "ab-U0348D.005"  
Aus = "PVP_" & Left(Replace(Date, ".", ""), 4) & Right(Date, 2) & Replace(Time, ":", "") & "_05230674.txt"  
Von  = "P02                                                                                                   A"  
Nach = "P02                                                                                        #           A"  

T = fso.OpenTextFile(Ein).ReadAll
fso.CreateTextFile(Aus).Write Replace(T, Von, Nach)
fso.DeleteFile(Ein)
Da die Ausgangsdatei ohnehin gelöscht wird, habe ich das Umbenennen eingespart ...

Grüße
bastla
Steven123
Steven123 20.07.2015 um 20:27:18 Uhr
Goto Top
Herzlichen Dank!!!!!!!!!