malcomxcia
Goto Top

Batch Dateien vergleichen FTP ?

Tach'en erst mal ! ! !

Ist es möglich das ich via Batch 2 Dateien anhand des Datums vergleichen kann ? Eine Datei liegt auf nem FTP und die andere lokal. Soll quasi ne Update Funktion werden. Also qusi ist ja selbst erklärend ;). Ist die Datei auf dem FTP neuer als die lokale Datei dann runterladen.

FTP Connect sowie runterladen ist ja kein Thema jedoch klappt das mit nem Vergleich ?

Gruß und euch allen hier ein schönes Wochenende
Malcom

Content-ID: 210716

Url: https://administrator.de/contentid/210716

Ausgedruckt am: 16.11.2024 um 13:11 Uhr

rubberman
rubberman 06.07.2013 um 14:16:54 Uhr
Goto Top
Hallo malcomxcia.

IMO wirst du dann wohl 2 mal auf den Server zugreifen müssen. Das erste Mal ziehst du dir eine Liste der Dateien mit dem (FTP!) DIR Command und legst sie lokal in einer Datei ab. Diese Liste verarbeitest du im Batchcode und extrahierst Dateinamen und zugehöriges Datum und vergleichst mit deinen lokalen Dateien. Nun kannst du dich ein zweites Mal einloggen und nur die neueren Dateien herunterladen.
Das Ganze ist also mit dem Windows-eigenen FTP Tool unglaublich umständlich ... Soweit ich weiß kommt es dann auch noch auf den Server an, in welchem Format die Liste bei dir ankommt und welches Datumsformat dabei herauskommt. Dann Datum- und Zeitwerte in Batch zu vergleichen ist noch mal eine ganz andere Geschichte face-wink

Grüße
rubberman
malcomxcia
malcomxcia 06.07.2013 um 14:20:36 Uhr
Goto Top
Erst mla vielen Dank für deine Antwort !

Hört sich ja dann doch etas komplizierter an ;)

Dann werd ich mal schaun was es noch an externen Dos/FTP Clients gibt oder hast Du da nen Tipp für mich und kennst was brauchbares ?

Malcom
bastla
bastla 06.07.2013 um 14:27:34 Uhr
Goto Top
Hallo malcomxcia!

Sollte mit wget (Option "-N") zu machen sein ...

Grüße
bastla
rubberman
rubberman 06.07.2013 aktualisiert um 14:39:24 Uhr
Goto Top
Hallo malcomxcia.

hast Du da nen Tipp für mich und kennst was brauchbares ?
Nein, leider nicht. Für die paar Aktionen, die ich mal auf einem FTP Share zu erledigen habe reicht mir das Windows Tool (oder ich erledige das gleich per Hand).
Aber du kannst ja mal posten, welches Format ein FTP DIR bei dir ausspuckt, dann können wir zusammen was erarbeiten.

Ein Batchschnippsel dazu könnte etwa so aussehen:
>"%temp%\test.ftp" (  
  echo open %ftpHost%
  echo %ftpUser%
  echo %ftpPassword%
  echo dir "%ftpRemoteDir%" "%~dp0dir.txt"  
  echo disconnect
  echo bye
)
ftp.exe -i -s:"%temp%\test.ftp"  
del "%temp%\test.ftp"  
Die Variablen ftpHost, ftpUser, ftpPassword und ftpRemoteDir musst du entsprechend vorher definieren. Die Liste solltest du dann in "dir.txt" finden.

Grüße
rubberman
malcomxcia
malcomxcia 07.07.2013 um 19:12:56 Uhr
Goto Top
N'Abend ;)

@bastla

Danke für den Tipp ! Klappt wunderbar das ganze und das nur mit einer Zeile Code face-wink

@rubberman

Vielen Dank für ddein Angebot, aber kann Dir auch nur, solltest du mal sowas brauchen zu dem Tipp von bastla mit wget raten. Klappt astrein und ohne großen Aufwand ;)

Gruß und danke nochmal an euch beide
Malcom
malcomxcia
malcomxcia 07.07.2013 um 20:41:00 Uhr
Goto Top
Öhm ein Frage hätt ich noch hierzu ;)

Wie schon gemeint klappt das ganze wunderbar jedoch wenn ich die upgedatete Batch, alkso die heruntergeladene im normale Win Editor öffne steht dann alles hintereinander geschrieben und nicht mehr strukturiert in einzelnen Zeilen. Benutz zwar ein anderen Editor und da klappts, aber jemand anders hat das Problem, wo es eben halt im normalen Win Editor öffnet.

Weis jemand woran das liegen könnte ?

Malcom
rubberman
rubberman 08.07.2013 aktualisiert um 21:32:37 Uhr
Goto Top
Hallo malcomxcia,

liegt wahrscheinlich an deinem Browser.
Der normale Windows-Zeilenumbruch besteht aus 2 Zeichen, CarriageReturn und LineFeed (0D 0A wenn du dir das in einem HEX Editor ansiehst). Ich habe gehört, dass manche Browser sich auf eines der beiden Zeichen beschränken.
Versuch's mal aus dem Internetexplorer zu kopieren, der ist ja auf jeder Windowskiste dabei. (Nutze dabei den "Quelltext" Link rechts oberhalb des Codes, wenn es ein Batchcode aus diesem Forum ist.)

Grüße
rubberman
malcomxcia
malcomxcia 09.07.2013 um 01:42:05 Uhr
Goto Top
Erst mal Danke für deine Antwort !

Ich denk da hab ich mich vielleicht etwas missverständlich ausgedrückt ;). Also ich schreibe die Batch ja in meinem Editor (Edit Plus oder egal auch im normalen Win Editor). Soweit so gut und alles schön strukturiert. Sobald aber die Datei eben über die Batch mit der vom FTP überschrieben wurde, steht alles, ABER NUR wenn ich diese im normalen Win Editor öffne ohne Zeilenumbrüche. Öffne ich diese mit Edit Plus ist alles schön strukturiert.

Hoffe ist etwas verständlicher erklärt ;) Oder hab ich dich jetz nicht richtig verstanden, denn der Browser hat in dem Moment mit der ganzen Geschichte nix zu tun ;)

Gruß
Malcom
rubberman
rubberman 09.07.2013 um 12:17:24 Uhr
Goto Top
Hallo malcomxcia,

anders gesagt, du hast die Probleme mit Zeilenumbrüchen, wenn du Wget nutzt? Ist dann sicher ein Fall von RTFM face-wink

Ich nutze Wget nicht, aber ein Blick in die Doku hat mich folgendes finden lassen:
Wget also supports the type feature for ftp urls. By default, ftp documents are retrieved in the binary mode (type ‘i’), which means that they are downloaded unchanged. Another useful mode is the ‘a’ (ASCII) mode, which converts the line delimiters between the different operating systems, and is thus useful for text files. Here is an example:

ftp://host/directory/file;type=a
Grüße
rubberman
malcomxcia
malcomxcia 10.07.2013 um 10:39:00 Uhr
Goto Top
Erst mal vielen Dank für deine Antwort ;)

Ich Spongo hatte dies auch gelesen, und auch probiert, nur sollte man halt kein Leerzeichen zwische URL und ;type=a lasse face-sad

trotzdem nochmals vielen Dank und einen schönen tag ;)
Malcom
malcomxcia
malcomxcia 10.07.2013 um 18:50:51 Uhr
Goto Top
Also muss das ganze hier doch nochmal aufrollen !

Irgendwie haut das ganze denn doch noch nicht so hin. das komische ist, wenn ich meine Datei lokal ändere, das er dann trotzdem die ältere vom Server holt. wenn ich die Zeit der Dateien vergleiche, ist meine lokal geänderte datei auch neue von der Zeit her, aber komischerweise koüpiert er mir trotzdem die alte vom Server.

Aber sollte doch so passen das ganze:

wget -r -nd --ftp-user="user" --ftp-password=pass --timestamping ftp://www.your-server.de  

Woran könnte das liegen. Hab jetzt echt schon so einiges durchprobiert aber komme infach nicht weiter face-sad

Malcom
malcomxcia
malcomxcia 10.07.2013 aktualisiert um 20:31:14 Uhr
Goto Top
Also hab das ganze jetzt mehrmals probiert und wenn ich meine LOKALE Datei änder holt er mir trotzdem die ÄLTERE vom FTP ab und überschreibt somit die lokal NEUERE.

Malcom
SaschaRD
SaschaRD 11.07.2013 um 13:37:02 Uhr
Goto Top
Hallo Malcom,

ich verwende einen Dateivergleich auf Datumsebene. Hierbei wird die Datei auf dem Netzlaufwerk gegen die Lokal liegende Datei überprüft.

set CHECK="Angabe des Pfades der Datei auf dem Netzlaufwerk"
set AGAINST="Angabe des Pfades der lokalen Datei"

FOR /f "delims= " %%a in ('dir %CHECK% /t:c^|findstr /i /l "setup.exe"') do (  
	FOR /f "delims= " %%b in ('dir %AGAINST% /t:c^|findstr /i /l "setup.exe"') do (  
		IF /i %%b GEQ %%a ( echo %time%: daily build version: %%a server and %%b local are equal >> %LOGFILE% & goto cancel
				) ELSE echo %time%: daily build version: %%a server and %%b local are not equal >> %LOGFILE% & goto install
	)
)

:cancel
exit

:install
was auch immer.

Welches FTP Programm verwendet Du?
malcomxcia
malcomxcia 11.07.2013 aktualisiert um 16:57:24 Uhr
Goto Top
Hallo und erst mla Danke für deine Antwort ;)

Ich benutze wie oben von bastla geraten Wget. Die hat eben einen speziellen Parameter, der nur neuere Dateien vom FTP holt.

z.B
wget -nd -N --ftp-user="user" --ftp-password=pass ftp://www.your-server.de/test.txt  

Und ich hab eben das Problem, das wenn ich meine im Beispiel Textdatei lokal ändere, ist diese ja neuer als diese auf dem FTP, und er holt mir trotzdem die Datei ab un überschreibt die LOKAL NEUERE.

Malcom
malcomxcia
malcomxcia 12.07.2013 aktualisiert um 11:07:23 Uhr
Goto Top
Also da steht noch folgendes in der Docu !

If the local file does not exist, or the sizes of the files do not match, Wget will download the remote file no matter what the time-stamps say.

Öhm sorry aber was soll dann das ganze Timestamping ? Wenn eine Datei NEUER ist, dann wird sich auch etwas an deren Größe verändert haben.

Mal abgeshen von irgenwelchen Bilddaten

Gruß
Malcom
rubberman
rubberman 12.07.2013 um 11:21:05 Uhr
Goto Top
Hallo malcomxcia.

Ich kann dir da nicht mehr weiterhelfen, da ich, wie schon gesagt, nicht mit Wget arbeite. Der Thread ist nun auch langsam alt genug, dass er keine große Beachtung mehr findet.

Mach doch noch mal einen neuen Thread unter Windows Tools & Utilities auf und erkläre dein Problem mit Wget und/oder verweise auf diesen Thread. Ggf. sind dort die User unterwegs, die die nötige Erfahrung mit wget mitbringen...

Grüße
rubberman
malcomxcia
malcomxcia 12.07.2013 um 11:37:22 Uhr
Goto Top
Danke für den Tipp und hab ich gerade soeben getan ;)