WinFuture-Forum.de: Bat-Datei: Dateien auf ftp verschieben - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Bat-Datei: Dateien auf ftp verschieben Dateien auf ftp verschieben, nicht kopieren


#1 Mitglied ist offline   chli 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 17. Januar 22
  • Reputation: 0

geschrieben 17. Januar 2022 - 16:29

Hallo,

ich möchte mit einer Bat-Datei Dateien auf den ftp-Server verschieben - also nicht kopieren - d.h. dass dann die Dateien im Kopierverzeichnis nicht mehr vorhanden sind.

Kopieren funktioniert soweit:
1. Bat Datei mit Inhalt:
ftp -s:DatenUpload-2022-117.ftp

2. Die zugehörige DatenUpload-2022-117.ftp beinhaltet:
OPEN server
user
passwort
CD ftp-verzeichnis
ASCII
PUT lokales-verzeichnis*.DTA
bye


Dies funktioniert soweit gut, alle Daten mit .DAT werden auf den ftp-Server übertragen.

ABER: Sie sind nach wie vor auch noch Lokal zu finden, es erfolgt also eine Kopie und kein verschieben.

Ich habe zum Verschieben den Befehl MOVE gefunden. Wird PUT mit MOVE ausgetauscht, erfolgt nichts.

Kann mir jemand mitteilen, wie hier richtig vorgegangen wird, so dass ein Verschieben und kein Kopieren erfolgt? Für Vorschläge bin ich dankbar.

Grüße sendet der Christian
0

Anzeige



#2 Mitglied ist offline   Stef4n 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.216
  • Beigetreten: 20. August 18
  • Reputation: 251
  • Geschlecht:Männlich
  • Wohnort:RLP ~Mainz
  • Interessen:pc

geschrieben 17. Januar 2022 - 23:38

Wenn du ja schon eine .BAT hast kannst du doch einfach nach dem FTP Kommando die Dateien lokal löschen. So würde ich das lösen.
Der Move Befehl innerhalb des FTP Skripts wird nur auf dem Server Dateien verschieben, aber Dateitransfer auf den Server hoch oder runter geht mMn nur mit put oder get.
... aber bitte vorher ein Backup machen! ;-)
0

#3 Mitglied ist offline   chli 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 17. Januar 22
  • Reputation: 0

geschrieben 18. Januar 2022 - 09:02

Hallo Stef4n,

danke für deine Rückmeldung, also brauche ich mich bei meinem Anliegen nicht mehr um den move-Befehl bemühen.

Du hast natürlich recht, mit einem weiteren Befehl ist das Löschen der lokalen Dateien möglich.

ABER: Was ist, wenn gerade die Internetverbindung etwas schlecht ist, die Dateien wurden noch nicht vollständig übertragen und der Löschauftrag legt schon los?
Hier sehe ich eine mögliche Fehlerquelle, welche natürlich bei einem Verschieben nicht gegeben wäre.


Gibt es hierfür eine gute Lösung?

Ich bin dankbar für einen Vorschlag.

Grüße vom Christian

Dieser Beitrag wurde von chli bearbeitet: 18. Januar 2022 - 09:03

0

#4 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 18. Januar 2022 - 19:02

Wenn die Daten so wichtig sind, dass es ein Problem wäre, wenn sie bei einem nicht erfolgreichen Upload versehentlich gelöscht werden, behält man doch so oder so ein Backup und dann muss man sie gar nicht löschen. Sind sie nicht so wichtig, dann ist es doch egal, wenn mal eine weg ist. Da klingt für mich das ganze System nicht so logisch.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#5 Mitglied ist offline   Stef4n 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.216
  • Beigetreten: 20. August 18
  • Reputation: 251
  • Geschlecht:Männlich
  • Wohnort:RLP ~Mainz
  • Interessen:pc

geschrieben 19. Januar 2022 - 23:15

So ein Skript arbeitet ja sequentiell, wenn's beim FTP Befehl Probleme beim Transfer gibt dürfte das Skript stehen bleiben und das lokale Löschen dürfte gar nicht ausgeführt werden.
Ggf. könnte man natürlich auch mit etwas Aufwand prüfen ob der Transfer erfolgreich war.
Aber wie der Vorredner schon schrieb, wenn die Dateien so wichtig sind, würde ich sie lokal nur verschieben, statt zu löschen, um sie im dann Fehlerfall noch vorrätig zu haben.
... aber bitte vorher ein Backup machen! ;-)
0

#6 Mitglied ist offline   chli 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 17. Januar 22
  • Reputation: 0

geschrieben 24. Januar 2022 - 12:00

Hallo ihr beiden,
das Problem hier ist nicht, dass die Daten so wichtig sind, sondern dass ein korrekter Ablauf erforderlich ist.

So ist die Situaiton bei mir:
In unserem Unternehmen haben wir externe Mitarbeiter, die wöchentlich ein Datenpaket erhalten (Änderungen bei den Endkunden etc.).
Dieses Datenpaket wird einmal die Woche erstellt, lokal abgespeichert und dann auf den ftp-Server übertragen (im Anschluss vom externen Mitarbeiter am ftp-Server abgerufen und bei ihm wieder lokal eingelesen).
Nach dem Übertragen müssen die Datenpakete bei mir wieder lokal gelöscht werden, da sie sonst die Woche drauf erneut übertragen werden.

Wenn also die Übertragung nicht korrekt läuft und am Ende das Datenpaket bei mir in der Firma gelöscht wird, gehen nicht nur beim externen Mitarbeiter die Daten ab, auch kann das Problem bestehen, dass dies niemant mitbekommt.

Übrigens, ich habe bereits im Netz ein .bat gefunden, die meine Daten vom ftp-Server auf lokal verschiebt (kopieren und dann löschen), nur habe ich leider fachlich zu wenig Ahnung diesen Weg "umzudrehen":

::FtpMoveHere.cmd:::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off&setlocal EnableDelayedExpansion
set "Fts=%~n0.Fts" &:: name ftp-script like this file extension=fts
set "Ftl=%~n0.Ftl" &:: name ftp-log like this file extension=log
set "Ftf=%~n0.now" &:: temp folder for files of this run
set "Lcd=LOKALESVERZEICHNIS" &:: local destination
set "Rcd=FTPVERZEICHNIS" &:: Remote Dir
set "Host=FTPSERVER"
set "User=FTPUSER"
::set /P Pass=Enter password for Host %Host% User %User% :
set "Pass=FTPPASSWORT"
if exist "%Ftf%" RD /Q "%Ftf% >NUL 2>&1
MkDir "%Ftf%"
DEl /Q %Fts% %Ftl% 1>NUL 2>&1

:: create and execute Ftp script to get files
Call :GenScript Get & FTP -v -i -s:"%Fts%" >"%Ftl%"
if errorlevel 1 echo Problem errorlevel %errorlevel% &goto :eof
Type NUL>%FTS%

:: create and execute Ftp script to delete remote files
Call :GenScript Del & FTP -v -i -s:"%Fts%" >>"%Ftl%"
Move "%Ftf%\*" "%Lcd%"
:: do cleanup
Del /Q "%~n0.f*" >Nul 2>&1
exit
Pause
goto :eof
:GenScript Action ----------------------------------------
>>%Fts% echo open %Host%
>>%Fts% echo/%User%
>>%Fts% echo/%Pass%
>>%Fts% echo/
>>%Fts% echo cd %Rcd%
>>%Fts% echo/
if /I %1==Get (
>>%Fts% echo lcd %Ftf%
>>%Fts% echo/mget *.*
>>%Fts% echo/
) Else (
for %%A in (%Ftf%\*) do >>%Fts% echo Delete %%~nxA
>>%Fts% echo/
)
>>%Fts% echo bye
>>%Fts% echo/
:: For documentation append script to log file
>>"%Ftl%" echo %time% %1-Script ------------------------------------
Type "%Fts%" >> "%Ftl%"
Goto :eof
::FtpMoveHere.cmd:::::::::::::::::::::::::::::::::::::::::::::::::::::


Das Programm funktioniert zuverlässig, ist aber aktuell leider nur von mir von ftp in Richtung lokal verwendbar.

Vielleich hat ja jemant eine Idee was geändert werden muss, um den Weg umzudrehen?

Grüße vom Christian
0

#7 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 24. Januar 2022 - 12:59

Man könnte auch mit dem Dateialter arbeiten. Also Dateien löschen, die älter als 6 oder 7 Tage sind und Dateien hochladen, die jünger als zwei oder drei Tage sind (bzw. angepasst an den Hochladerhythmus). Dann wären die Dateien nach dem Hochladen noch eine Woche sicherheitshalber da und würden dann erst gelöscht werden und selbst wenn beim Löschen etwas nicht klappt, würden die alten Dateien nicht mit hochgeladen werden.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#8 Mitglied ist offline   Stef4n 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.216
  • Beigetreten: 20. August 18
  • Reputation: 251
  • Geschlecht:Männlich
  • Wohnort:RLP ~Mainz
  • Interessen:pc

geschrieben 27. Januar 2022 - 22:51

Wenn der Prozess so wichtig ist, dann könnte/sollte man das Resultat der Übertragung monitoren. Scripte kann man zB auch dazu bringen am Ende eine E-Mail zu senden und du würdest das Resultat in deinem Mail Postfach sehen.
Und ich bleibe dabei, dass die lokale Datei bei dir NICHT gelöscht werden sollte, sondern nur verschoben, damit du im Fehlerfall den FTP Upload nochmal anstoßen kannst.
... aber bitte vorher ein Backup machen! ;-)
0

#9 Mitglied ist offline   chli 

  • Gruppe: Mitglieder
  • Beiträge: 4
  • Beigetreten: 17. Januar 22
  • Reputation: 0

geschrieben 01. Februar 2022 - 14:34

Hallo nochmal, danke für die Rückmeldungen.

Wegen Datum: Ist mir mit einer BAT zu hoch, da habe ich zu wenig Wissen.

Wegen nicht löschen: Löschen ist kein Problem, da die Datei ja jederzeit wieder erstellt werden kann. Mit der Dokumentation kann ich mich anfreunden.

Werde mir eine Zusatzlösung mit AutoHotKey überlegen, damit komme ich wenigstens etwas klar.

Grüße vom Christian
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0