Ralf Eisenreich

SQLBlog.DE | ..things to remember

June 29th, 2006

FTP-Scripting unter DOS/Windows

IT, Windows, by Ralf.

Unter DOS bzw. Windows kann man den Download von einzelnen oder mehreren Dateien auf folgende Weise automatisieren:

Dazu einfach folgenden Code als Batch-Datei mit der Endung .bat abspeichern.

@ECHO OFF
:: Check if the password was given
IF "%1"=="" GOTO Syntax
:: go to the right download location
cd C:\
:: open ftp connection
> ftp-script.ftp ECHO open 100.200.30.40
:: enter user name
>> ftp-script.ftp ECHO user
:: enter password
>> ftp-script.ftp ECHO %1
:: go one folder containing files
>> ftp-script.ftp ECHO cd ..
:: eliminate prompting
>> ftp-script.ftp ECHO prompt n
:: get multiple files
>> ftp-script.ftp ECHO mget *
:: get single file
:: >> ftp-script.ftp ECHO get filename
:: quit ftp program
>> ftp-script.ftp ECHO bye
:: start ftp program with previous commands
> ftp-protocol.txt %windir%\system32\ftp.exe -s:ftp-script.ftp
:: go to End
GOTO End

:Syntax
ECHO Usage: %0 password

:End

Mit diesem Script kann man automatisch mehrere FTP-Dateien herunterladen, wenn man dieses von einem Scheduler starten laesst. Ausserdem werden alle Ausgaben in einer Protokolldatei erfasst und das Passwort nicht in dem Script gespeichert, sondern es muss beim Aufruf als Argument uebergeben werden.
Moechte man bei mehreren Dateien nur jeweils die noch nicht geladenen Dateien herunterladen, wird es etwas schwieriger, da das FTP im Lieferumfang von DOS/Windows keinen Operator anbietet der dieses Verhalten ermoeglicht. Es werden immer alle Dateien ueberschrieben, sofern sie kein Read-Only Attribut besitzen.
Man kann aber im Script nach jedem Download die Dateien als Read-Only setzen und somit den erneuten Download verhindern, wobei folgender Code eingefügt werden muss:

>> ftp-protocol.txt ECHO set *.* files as read-only
>> ftp-protocol.txt attrib +R *.*

Moechte man sich zusaetzlich noch anzeigen lassen, ob ueberhaupt Dateien herunter geladen worden sind, kann man folgende Prozedur verwenden:

:: check successful loading
type ftp-protocol.txt | find /c "Sending data" >> ftp-protocol.txt
if errorlevel 1 GOTO Error
GOTO End
: Error
>> ftp-protocol.txt ECHO ERROR: No files were downloaded!
: End

Back Top

Responses to “FTP-Scripting unter DOS/Windows”

Comments (3) Trackbacks (0) Leave a comment Trackback url
  1. viele grüße übrigens!

  2. Klar, das brauche ich fuer mein Projekt bei Daimler.. Weil naemlich durch die bloede Firewall keine Incoming-Aktionen (Pushing) moeglich ist – deshalb also das Fetchen (Pull) per FTP.
    Ein handelsuebliches FTP-Programm wird ja benutzt – naemlich das einfachste was es gibt: Windows integrierter FTp-Client.. :-)

  3. du bist n krasser typ :) hastu dir das selber ausgeknobelt? wozu braucht man das denn? reicht da nicht ein handelsübliches ftp-programm aus?

  1. No trackbacks yet.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

Security Code: