Script Dateiinhalt auslesen und verschieben oder kopieren Batch
Hallo,
ich benötige Hilfe zum Thema Scripten.
Ich habe folgendes Problem. Wir nutzen in unserer Firma (mit 4 Töchterfirmen) Easylog (DHL) um Pakete zu versenden. Die Sendungsdaten werden direkt als txt-Datei aus unserem Warenwirtschaftssystem exportiert und in Easylog eigelesen. Dach dem wir dann ein Label generiert haben und die täglichen Sendungen abgeschlossen haben, wird eine Rückmeldungsdatei (auch eine txt-Datei) generiert, die wir dann wiederum in unser Warenwirtschaftssystem einlesen.
Soweit so gut, dass funktioniert auch alles wunderbar, ABER: die Rückmeldungen für alle Absender (insgesamt haben wir 5 verschiedene Absenderadressen) werden alle in nur 1 Ordner gepollt. Das kann man in Easylog auch leider nicht anders hinterlegen. Wir müssen daher die Dateien manuell öffnen um zu sehen welche Firma die Sendung betrifft um diese dann wiederum manuell in die Warenwirtschaft einzulesen, da vorher in der WAWI die Firma ausgewählt werden muss.
Meine Idee ist es, dass wir mit einem einfachen Script, dass die Dateizeilen ausliest (da darin auch die Absenderdaten enthalten sind) und dann die jeweilige Datei in einen Unterordner verschiebt oder kopiert.
Also quasi bisher läuft alles in C:\Easylog und es soll dann von dort in C:\Easylog\Firma1, C:\Easylog\Firma2, C:\Easylog\Firma3, C:\Easylog\Firma4 oder in C:\Easylog\Firma5 kommen. Am besten in einer Schleife, die das Minutenweise erledigt.
Die txt-Dateien sind wie folgt aufgebaut:
Lfd.Nr; Sendungsnummer;ka;ka;ka;MD;Absendername
11313;123456789012;0;1;1;74;Firma1;;usw.
Da ich leider nicht allzu viel von Scripts versehen hoffe ich jemand kann mir hier helfen.
Vielen Dank im Voraus und schönes WE.
ich benötige Hilfe zum Thema Scripten.
Ich habe folgendes Problem. Wir nutzen in unserer Firma (mit 4 Töchterfirmen) Easylog (DHL) um Pakete zu versenden. Die Sendungsdaten werden direkt als txt-Datei aus unserem Warenwirtschaftssystem exportiert und in Easylog eigelesen. Dach dem wir dann ein Label generiert haben und die täglichen Sendungen abgeschlossen haben, wird eine Rückmeldungsdatei (auch eine txt-Datei) generiert, die wir dann wiederum in unser Warenwirtschaftssystem einlesen.
Soweit so gut, dass funktioniert auch alles wunderbar, ABER: die Rückmeldungen für alle Absender (insgesamt haben wir 5 verschiedene Absenderadressen) werden alle in nur 1 Ordner gepollt. Das kann man in Easylog auch leider nicht anders hinterlegen. Wir müssen daher die Dateien manuell öffnen um zu sehen welche Firma die Sendung betrifft um diese dann wiederum manuell in die Warenwirtschaft einzulesen, da vorher in der WAWI die Firma ausgewählt werden muss.
Meine Idee ist es, dass wir mit einem einfachen Script, dass die Dateizeilen ausliest (da darin auch die Absenderdaten enthalten sind) und dann die jeweilige Datei in einen Unterordner verschiebt oder kopiert.
Also quasi bisher läuft alles in C:\Easylog und es soll dann von dort in C:\Easylog\Firma1, C:\Easylog\Firma2, C:\Easylog\Firma3, C:\Easylog\Firma4 oder in C:\Easylog\Firma5 kommen. Am besten in einer Schleife, die das Minutenweise erledigt.
Die txt-Dateien sind wie folgt aufgebaut:
Lfd.Nr; Sendungsnummer;ka;ka;ka;MD;Absendername
11313;123456789012;0;1;1;74;Firma1;;usw.
Da ich leider nicht allzu viel von Scripts versehen hoffe ich jemand kann mir hier helfen.
Vielen Dank im Voraus und schönes WE.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 245348
Url: https://administrator.de/contentid/245348
Ausgedruckt am: 19.03.2024 um 06:03 Uhr
6 Kommentare
Neuester Kommentar
OK, worauf ich hinaus will ist, dass es ganz unterschiedliche Methoden gibt, mit Textdateien zu arbeiten.
Für die eine ist bspw. interessant ob das Gesuchte bereits in der ersten Zeile steht (darf also auch keine Leerzeile sein), für die andere ist interessant ob alle Zeilen den gleichen Aufbau haben bzw. welche Zeile die erste ist, die ausgewertet werden soll.
Wir können ja mal testen ...
1. Variante
2. Variante
Nehme statt "datei.txt" einen real existierenden Dateiname.
Funktioniert bereits eine der Varianten (wird der Firmenname ausgegeben)?
Grüße
rubberman
Für die eine ist bspw. interessant ob das Gesuchte bereits in der ersten Zeile steht (darf also auch keine Leerzeile sein), für die andere ist interessant ob alle Zeilen den gleichen Aufbau haben bzw. welche Zeile die erste ist, die ausgewertet werden soll.
Wir können ja mal testen ...
1. Variante
@echo off &setlocal
<"datei.txt" set /p "line="
for /f "tokens=7 delims=;" %%i in ("%line%") do echo %%i
pause
2. Variante
@echo off &setlocal
for /f "usebackq tokens=7 delims=;" %%i in ("datei.txt") do set "company=%%i"
echo %company%
pause
Funktioniert bereits eine der Varianten (wird der Firmenname ausgegeben)?
Grüße
rubberman
Na super, dann bau ich das mal noch in eine Schleife ein.
Sollte die Dateiendung nicht txt sein (sondern bspw. csv), dann noch in Zeile 2 ändern.
Grüße
rubberman
@echo off &setlocal
for /f "delims=" %%i in ('dir /a-d /b *.txt') do (
set "file=%%i"
setlocal EnableDelayedExpansion
<"!file!" set /p "line="
for /f "tokens=7 delims=;" %%j in ("!line!") do (
if not exist "%%~j\" md "%%~j"
move "!file!" "%%~j\"
)
endlocal
)
Grüße
rubberman