TXT Datei Zeilenweise in neue TXT Dateien übergeben
Guten Tag,
bisher nur als stiller Mitleser habe ich heute eine Frage an die Gemeinschaft, bei der Ihr mir vielleicht helfen könnt.
Bisher hat ein Batch Skript von mir immer eine Export-Datei mit einer Zeile verarbeitet:
Die Export-Datei besteht aber neuerdings mit mehreren Zeilen (leider ist nie klar, wie viele Zeilen exportiert werden):
Gibt es eine Möglichkeit die „neue“ Datei Zeilenweise zunächst in TMP Dateien zwischen zu speichern und dann die TMP Dateien (immer eine nach der anderen) alle 10 Sek. in eine TXT Datei (Test.txt) in einem anderen Verzeichnis zu verschieben? Die zuvor erstellte TMP muss dann gelöscht werden.
bisher nur als stiller Mitleser habe ich heute eine Frage an die Gemeinschaft, bei der Ihr mir vielleicht helfen könnt.
Bisher hat ein Batch Skript von mir immer eine Export-Datei mit einer Zeile verarbeitet:
Max;Muster;Musterstraße;123;Musterhausen;
Die Export-Datei besteht aber neuerdings mit mehreren Zeilen (leider ist nie klar, wie viele Zeilen exportiert werden):
Max;Muster;Musterstraße;123;Musterhausen;
Max;Muster;Musterstraße;123;Musterhausen;
Max;Muster;Musterstraße;123;Musterhausen;
Gibt es eine Möglichkeit die „neue“ Datei Zeilenweise zunächst in TMP Dateien zwischen zu speichern und dann die TMP Dateien (immer eine nach der anderen) alle 10 Sek. in eine TXT Datei (Test.txt) in einem anderen Verzeichnis zu verschieben? Die zuvor erstellte TMP muss dann gelöscht werden.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 616044
Url: https://administrator.de/forum/txt-datei-zeilenweise-in-neue-txt-dateien-uebergeben-616044.html
Ausgedruckt am: 04.04.2025 um 19:04 Uhr
5 Kommentare
Neuester Kommentar
Warum denn temporäre Dateien? Schreibe doch einfach nach 10s Test.txt mit der nächsten Zeile neu.
Musste hier mal das alte PING Workaround anziehen, da TIMEOUT bei anstehender Umleitung des StdIn den Geist aufgibt.
Steffen
@echo off &setlocal
set "src=Export.csv"
set "dst=irgendwo\Test.txt"
setlocal EnableDelayedExpansion
<"!src!" (
for /f %%i in ('type "!src!"^|find /c /v ""') do echo %%i Zeilen&for /l %%j in (1 1 %%i) do (
echo verarbeite Zeile %%j
set "line=" &set /p "line="
>"!dst!" echo(!line!
>nul ping -n 11 127.0.0.1 &REM -n 11 = 10s
)
)
pause
Steffen
Schwierig zu sagen, ohne zu wissen wie der Ablauf in deinem Fall aussehen muss. START führt asynchron aus. Heißt, es wird nicht darauf gewartet dass das was ausgeführt wird auch wieder beendet ist. Statt dessen geht es ad hoc in die PING Zeile zum Warten.
Die Frage ist, warum musst du eigentlich warten? Weil du auf dein asynchron gestartetes Script warten musst? Dann solltest du definitiv START und PING rauswerfen und direkt synchron arbeiten...
Code des Scripts einfach einfügen, sollte grundsätzlich funktionieren. Du müsstest aber aufpassen, dass du dich in einer Umgebung mit verzögerter Variablenerweiterung befindest und diese auch benötigst.
Steffen
Die Frage ist, warum musst du eigentlich warten? Weil du auf dein asynchron gestartetes Script warten musst? Dann solltest du definitiv START und PING rauswerfen und direkt synchron arbeiten...
Code des Scripts einfach einfügen, sollte grundsätzlich funktionieren. Du müsstest aber aufpassen, dass du dich in einer Umgebung mit verzögerter Variablenerweiterung befindest und diese auch benötigst.
Steffen