Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

FTP Kommandos automatisieren

Frage Entwicklung Batch & Shell

Mitglied: ooAlbert

ooAlbert (Level 1) - Jetzt verbinden

17.07.2007, aktualisiert 16:43 Uhr, 5695 Aufrufe, 8 Kommentare

Hi,

ich möchte von einem FTP diverse Dateien auf meinen Lokalen Rechner kopieren. Deshalb habe ich mir folgende Batch geschreiben:

FTP.bat
01.
@ECHO OFF 
02.
START /MIN /WAIT ftp.exe -n -i -s:ftp00.txt
ftp00.txt
01.
OPEN Host 
02.
USER name PW 
03.
Binary 
04.
CD "pdf" 
05.
LCD "G:\pdf" 
06.
MGET "*.pdf" 
07.
 
08.
ASCII 
09.
CD "dat" 
10.
LCD "G:\dat" 
11.
 
12.
MET "*.dat"  
13.
 
14.
QUIT
Das funktioniert soweit auch, jedoch bräuchte ich noch eine möglichkeit das jeweil nur die aktuellsten dateien geladenw erden oder das MGET hat nichts überschreibt.

Hat da wer eine Idee?
Mitglied: bastla
17.07.2007 um 11:48 Uhr
Hallo ooAlbert!

Eine Q&D-Lösung wäre wohl, ein lokales "Temp"-Verzeichnis zu verwenden und von dort die nicht im Zielverzeichnis existierenden Dateien zu verschieben sowie den Rest zu löschen, also zb im ftp-Script
01.
... 
02.
LCD G:\ftpTemp\pdf 
03.
...
und im Batch dann
01.
for %%i in (G:\ftpTemp\pdf\*.pdf) do if not exist "G:\pdf\%%~nxi" move "%%i" G:\pdf\  
02.
del G:\ftpTemp\pdf\*.pdf
Woran erkennt man eigentlich die "aktuellsten" Dateien?

Grüße
bastla
Bitte warten ..
Mitglied: ooAlbert
17.07.2007 um 12:49 Uhr
man erkennt die nur daran, das diese eben noch nicht im zielverzeichnis sind bzw. haben die allein eine fortlaufende nummer, bsp. 82326199.pdf, 82326200.pdf, ...

außerdem hab ich festgestellt, das jede 50ste Datei mit korrektem namen aber mit 0byte angelegt wird. Diese sind dann natürlich defekt, auf dem server sind sie jedoch fehlerfrei. Muß man da noch irgendwelche puffer anlegen oder sowas?

mal anders gefragt:
kann ich nicht die letze datei im lokalen verzeichnis auslesen lassen und dann nach der auf dem ftp suchen? dann hätte der doch den einsprung punkt.
Bitte warten ..
Mitglied: bastla
17.07.2007 um 13:55 Uhr
Hallo ooAlbert!

Muß man da noch irgendwelche puffer anlegen oder sowas?
Dazu kann ich leider nichts sagen.

... haben die allein eine fortlaufende nummer ...
Dann könntest Du ja vielleicht das MGET auf zB "8*.pdf" beschränken ...

Grüße
bastla
Bitte warten ..
Mitglied: ooAlbert
17.07.2007 um 14:22 Uhr
hm, wie durchsuch ich denn das lokale verzeichnis um die letze datei darin zu finden? dann bräuchte man ja nur noch die nummer um eins erhöhen und hätte die aktuelle datei. Mget würde ja dann von dort bis zur aller aktuellsten alles rüberschieben und den rest unbehelligt lassen.
Bitte warten ..
Mitglied: bastla
17.07.2007 um 14:43 Uhr
Hallo ooAlbert!

Etwa so (nach Datum / Uhrzeit):
01.
@echo off & setlocal 
02.
set Letzte= 
03.
for /f "delims=" %%i in ('dir /b /od G:\pdf\*.pdf') do set "Letzte=%%i" 
04.
if not defined Letzte echo Keine Datei gefunden! & goto :eof 
05.
echo %Letzte%
Wenn Du nach der höchsten fortlaufenden Nummer suchst, statt "/od" ein "/on" (damit wird nach Namen sortiert) verwenden.

Grüße
bastla
Bitte warten ..
Mitglied: ooAlbert
17.07.2007 um 15:10 Uhr
er ließt jetzt die richtige datei aus kann man eigentlich das "*.pdf" nicht durch eine Variable ersetzen? ich habs mit %Datei% und "%Datei%" versucht aber es ging nicht.

achso und nochwas... wie bekomm ich denn die gewonnene datei in die TXT in der die ftp commandos stehen??
Bitte warten ..
Mitglied: bastla
17.07.2007 um 15:42 Uhr
Hallo ooAlbert!

kann man eigentlich das "*.pdf" nicht durch eine Variable ersetzen?
Kann man natürlich - allerdings nehme ich an, dass Du damit mehrere Dateitypen abfragen und deren jeweilige Nummer erhöhen willst. Dazu muss sichergestellt sein, dass jede Datei nach dem gleichen Schema benannt ist und der Name also nur aus einer Nummer und dem jeweiligen Dateityp besteht. Wenn dem so ist, sollte das etwa so gehen:
01.
@echo off & setlocal 
02.
call :GetNext pdf 
03.
set "Npdf=%Next%.pdf" 
04.
 
05.
call :GetNext dat 
06.
set "Ndat=%Next%.dat" 
07.
 
08.
... 
09.
... in ftp00.txt schreiben (siehe unten) 
10.
... 
11.
 
12.
START /MIN /WAIT ftp.exe -n -i -s:ftp00.txt 
13.
goto :eof 
14.
 
15.
:GetNext 
16.
set Next= 
17.
for /f "delims=" %%i in ('dir /b /on G:\%1\*.%1') do set "Next=%%~ni" 
18.
If defined Next set /a Next+=1 & goto :eof 
19.
echo Keine *.%1 gefunden! 
20.
set Next=9999999999 
21.
goto :eof
Das Erstellen der "ftp00.txt" mit den entsprechenden dynamischen Inhalten könntest Du mit einer Serie von "echo"-Befehlen durchführen, also etwa:
01.
set "ftpScript=G:\ftp00,txt" 
02.
echo OPEN Host>"%fptScript%" 
03.
echo USER name PW>>"%fptScript%" 
04.
echo Binary>>"%fptScript%" 
05.
echo CD "pdf">>"%fptScript%" 
06.
echo LCD "G:\pdf">>"%fptScript%" 
07.
echo MGET "%Npdf%">>"%fptScript%" 
08.
...
Beim ersten Mal nur ein Umleitungszeichen (">") verwenden, damit die alte "ftp00.txt" überschrieben wird, ansonsten immer ">>", damit die Zeile an die vorhandene "ftp00.txt" angefügt wird.

Grüße
bastla
Bitte warten ..
Mitglied: ooAlbert
17.07.2007 um 16:43 Uhr
hm, stimmt das ganze aus der batch in eine txt schreiben wobei ich dachte das würde man umgehen können. Es klappt zumindestens.

Jetzt muß ich nur noch überlegen wie ich einige zeichen vom dateinamen durch den stern ersetze, sonst macht mget ja keinen sinn

Das einzige was halt bleibt einige dateien werd ich immer überschreiben müssen, da ich nie genau weiß wieviele neue dazukommen und ich im ftp ja nicht sagen von datei 1111 bis datei 1155. sondern 11* habe das dann bis ende.
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Windows Tools
Automatischer FTP-Upload ohne angemeldeten Benutzer (5)

Frage von SarekHL zum Thema Windows Tools ...

DNS
gelöst Sophos UTM9 - FTP nur über IP erreichbar (4)

Frage von PronMaster zum Thema DNS ...

CMS
Wordpress FTP Client im Frontend (4)

Frage von Yannosch zum Thema CMS ...

Java
Problem bei Java und FTP (1)

Frage von Marlon1 zum Thema Java ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (32)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...