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.
Please also mark the comments that contributed to the solution of the article
Content-Key: 616044
Url: https://administrator.de/contentid/616044
Printed on: May 4, 2024 at 13:05 o'clock
5 Comments
Latest comment
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