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-Key: 276958

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

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

Member: bastla
bastla Jul 10, 2015 at 11:00:50 (UTC)
Goto Top
Hallo Steven123!

Schwer nachvollziehbar ...

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

Grüße
bastla
Member: Steven123
Steven123 Jul 10, 2015 at 18:58:44 (UTC)
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
Member: bastla
Solution bastla Jul 19, 2015, updated at Jul 20, 2015 at 18:27:02 (UTC)
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
Member: Steven123
Steven123 Jul 20, 2015 at 18:27:18 (UTC)
Goto Top
Herzlichen Dank!!!!!!!!!