flauschbobbel
Goto Top

FTP Verzeichnis vergleichen

Hallo Zusammen,

ich möchte ein FTP-Verzeichnis auslesen und es mit einem Verzeichnis auf meinem Windows-Client vergleichen.
Ich habe bereits hier etwas gestöbert und auch einen Ansatz gefunden.

Ich mache eine FTP-Verbindung und lese das entsprechende Verzeichnis aus und schreibe es in eine Datei (C:\Scripts\FTP_AuslesenListe.txt)

Das FTP-Script sieht wie folgt aus:
 
open 123.123.123.123
username
passwort
ls
cd /Photo
dir /Photo C:\Scripts\FTP_AuslesenListe.txt
disconnect 123.123.123.123
bye
Das funktioniert einwandfrei. Das Ergebnis sieht wie folgt aus:
 
drwxr-xr-x   2 tester ftp         32768 Dec 31  1979 2005-12-27  Weihnachten 2005
drwxr-xr-x   2 tester ftp         32768 Dec 31  1979 2005-12-30  Weihnachten 2005
drwxr-xr-x   2 tester ftp         32768 Dec 31  1979 2006-01-01  Weihnachten 2005-2006
drwxr-xr-x   2 tester ftp         32768 Dec 31  1979 2006-01-11  JM+CM Testbilder
...
Nun möchte ich mittes einer FOR-Schleife das Verzeichnis auf meinem Client lesen und mit der obigen Liste vergleichen.
Die fehlenden Verzeichnisse möchte ich mittels einem FTP-Commandfile, das ich mich zur Laufzeit zusammenbaue, auf den FTP-Server bringen

Folgender Befehl
 
FOR /F %%i in ('dir /b "E:\--- B I L D E R ---\JM Fotos\*.*"') do FINDSTR /e /c:"%%~nxi" C:\Scripts\FTP_AuslesenListe.txt || echo put %%i >>temp.txt  
schlägt aber fehl, es wird aber nur der erste Teil des Verzeichnisses ausgelesen:

Inhalt der temp.txt
 
put 2005-12-27 
put 2005-12-30 
put 2006-01-01 
...

Meine Verzeichnisse beginnen mit "yyy-mm-dd Verzeichnisname". Zwischen dem Datum und dem Verzeichnisname sin 2 "Leerzeichen".
Zudem werden nicht nur die fehlende Verzeichnisse, sondern alle Verzeichnisse gelistet.
Könnt Ihr mir weiterhelfen?

Danke,
Flauschbobbel

Content-ID: 92560

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

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

bastla
bastla 21.07.2008 um 23:11:05 Uhr
Goto Top
Hallo Flauschbobbel!

Versuch es so:
FOR /F "delims=" %%i in ('dir /b "E:\--- B I L D E R ---\JM Fotos\*.*"') do FINDSTR /e /c:"%%~nxi" C:\Scripts\FTP_AuslesenListe.txt || echo put "%%i" >>temp.txt  
Grüße
bastla
Flauschbobbel
Flauschbobbel 22.07.2008 um 00:21:12 Uhr
Goto Top
Hallo bastla,

es funktioniert, jedoch habe ich noch ein kleines Problem dabei:
Bei meinem Auslesen in der Liste "FTP_AuslesenListe.txt" erhalte ich die Informationen einwandfrei mit Umlauten (ä,Ü,ö).
Mittels dem obigen DIR-Befehl werden die Umlaute in den Verzeichnisnamen (in der Liste temp.txt) nicht korrekt dargestellt, was dazu führt, das er ein Verzeichnis nicht finden kann und somit das "falsche", also mit den Sonderzeichen nochmals kopieren will

Beispiel in Temp.txt:
...
put "2007-06-06 Anbau Rckseite, Info fr Caspar"
...

Hast Du hierzu ggf. noch eine Idee?

Grüße,
Flauschbobbel
bastla
bastla 22.07.2008 um 00:30:27 Uhr
Goto Top
Hallo Flauschbobbel!

Sollte mit
for /f "tokens=2 delims=:." %%i in ('chcp') do set "CP=%%i"  
chcp 1252
FOR /F "delims=" %%i in ('dir /b "E:\--- B I L D E R ---\JM Fotos\*.*"') do FINDSTR /e /c:"%%~nxi" C:\Scripts\FTP_AuslesenListe.txt || echo put "%%i" >>temp.txt  
chcp %CP%
klappen.

Grüße
bastla
Flauschbobbel
Flauschbobbel 22.07.2008 um 00:45:53 Uhr
Goto Top
Danke bastla!

Es funktioniert. Kannst Du mir aber bei Gelegenheit die Settings erklären?
Wenn ich es richtig interpretiere liest du die aktuelle codepage aus (in die Variable %CP%).
Dann setzt du sie auf 1252 ??? Woher hast Du die Info, für was steht 1252?
Befehl ist wieder klar..
... und danach wird die CP wieder auf den alten Wert gesetzt.

Klasse!
Danke,
Flauschbobbel
bastla
bastla 22.07.2008 um 00:58:50 Uhr
Goto Top
Hallo Flauschbobbel!

Üblicherweise wird in der CMD-Shell CP 850 verwendet, aber, um flexibel zu bleiben, wird (wie Du richtig erkannt hast) einfach die aktuelle Codepage zwischengespeichert und dann wieder gesetzt.

Woher hast Du die Info, ...
Was für eine Frage face-wink - natürlich von Biber ...

... für was steht 1252?
Windows ANSI - kannst Du zB hier finden.

Grüße
bastla