Aktuelle Dateien via Batch
Batch-Datei zum Überprüfen aktueller Datei im Verzeichnis (anhand von Datum im Dateiname)
Hi Leute,
folgendes Szenario:
Auf einem FTP-Server liegt jeweils eine sich täglich/stündlich aktualisierende Datei mit dem Syntax: name-prog-datum.csv (z.B. name-prog-20080525.csv) => Das Datum im Dateinamen hat immer das Datum vom Vortag.
Die Dateien können auf dem FTP-Server nicht gelöscht werden (vom Provider so gewünscht), weswegen sich diese fortlaufend auf dem FTP-Server ansammeln.
Anfangs war das Löschen auf dem FTP-Server noch möglich, doch nun weiss ich nicht, wie ich meiner Batch-Datei mitteilen soll, welche Datei die aktuelle ist?! Bei sich täglich ändernden Dateinamen anhand vom Datum und auch noch der verbleibenden Dateien auf dem Server keine Ahnung. Im Forum finde ich auch keine Lösung speziell für meine Anwendung.
Hier meine bisherige Batch- und FTP-Datei:
ftp.bat
ECHO Daten abrufen
D:
CD Daten
ftp -s:provider.ftp > ftp-log.txt
COPY name*prog*.csv D:\Daten\Backup
DEL name-fuer-programm.csv
RENAME name*prog*.csv name-fuer-programm.csv
provider.ftp
OPEN www.provider.de
Username
Passwort
LS
PROMPT
MGET name*prog*.csv
MDELETE name*prog*.csv
BYE
DISCONNECT
Gibt es eine Möglichkeit, nur die aktuelle Datei vom FTP-Server zu downloaden bzw. nach dem Download nur die aktuellste Datei in das Anwendungs-Verzeichnis D:\Daten zu kopieren und anschließend umzubenennen in name-fuer-programm.csv ???
Leider weiss ich nicht, wie ich das mit dem Datum im Dateinamen hinkriege und das auch noch jeweils vom Vortag. Oder bei gleich Dateinamen.
Habt Ihr Ideen?
Gruß
Marc
Hi Leute,
folgendes Szenario:
Auf einem FTP-Server liegt jeweils eine sich täglich/stündlich aktualisierende Datei mit dem Syntax: name-prog-datum.csv (z.B. name-prog-20080525.csv) => Das Datum im Dateinamen hat immer das Datum vom Vortag.
Die Dateien können auf dem FTP-Server nicht gelöscht werden (vom Provider so gewünscht), weswegen sich diese fortlaufend auf dem FTP-Server ansammeln.
Anfangs war das Löschen auf dem FTP-Server noch möglich, doch nun weiss ich nicht, wie ich meiner Batch-Datei mitteilen soll, welche Datei die aktuelle ist?! Bei sich täglich ändernden Dateinamen anhand vom Datum und auch noch der verbleibenden Dateien auf dem Server keine Ahnung. Im Forum finde ich auch keine Lösung speziell für meine Anwendung.
Hier meine bisherige Batch- und FTP-Datei:
ftp.bat
ECHO Daten abrufen
D:
CD Daten
ftp -s:provider.ftp > ftp-log.txt
COPY name*prog*.csv D:\Daten\Backup
DEL name-fuer-programm.csv
RENAME name*prog*.csv name-fuer-programm.csv
provider.ftp
OPEN www.provider.de
Username
Passwort
LS
PROMPT
MGET name*prog*.csv
MDELETE name*prog*.csv
BYE
DISCONNECT
Gibt es eine Möglichkeit, nur die aktuelle Datei vom FTP-Server zu downloaden bzw. nach dem Download nur die aktuellste Datei in das Anwendungs-Verzeichnis D:\Daten zu kopieren und anschließend umzubenennen in name-fuer-programm.csv ???
Leider weiss ich nicht, wie ich das mit dem Datum im Dateinamen hinkriege und das auch noch jeweils vom Vortag. Oder bei gleich Dateinamen.
Habt Ihr Ideen?
Gruß
Marc
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 88446
Url: https://administrator.de/forum/aktuelle-dateien-via-batch-88446.html
Ausgedruckt am: 18.04.2025 um 05:04 Uhr
4 Kommentare
Neuester Kommentar
Hi Marc,
ich würde WasFile.exe benutzen um zu prüfen ob die Datei heute erstellt wurde.
Dann kannst Du nur die heutige Datei herunterladen.
Der Befehl hierzu lautet
Die Datei WasFile.exe findest Du problemlos im Netz. Das mit dem Datum im Dateinamen würde mich selbst aber auch noch interessieren...
Gruß
Lars
ich würde WasFile.exe benutzen um zu prüfen ob die Datei heute erstellt wurde.
Dann kannst Du nur die heutige Datei herunterladen.
Der Befehl hierzu lautet
WasFile.exe datei.txt created sametime today
if errorlevel 0 goto TRUE
:FALSE
Echo "Anderer Tag"
REM Tu etwas...
Pause
:TRUE
ECHO "Gleicher Tag"
REM Tu etwas...
pause
Die Datei WasFile.exe findest Du problemlos im Netz. Das mit dem Datum im Dateinamen würde mich selbst aber auch noch interessieren...
Gruß
Lars
Beim FTP Befehl gibt es den Befehl
der dir die Auflistung der Verzeichnissnamen ausgibt. Diese Auflistung kanst du dann, nach Namen sortiert, durchgehen und die Neuste raussuchen. Sortierst du die Namen aufsteigend wird die neuste Datei ja die Letzte in der Liste sein. daher ist ein einfach es abrufen ungefär so möglich (ungetestet):
FTP DIR
ftp dir ftp://Dateien.de > Dateiliste.txt
for /F "delims=" %%i in ('sort "Dateiliste.txt"') do set "aktfile=%%i"
echo Aktuellste Datei: %aktfile%