Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / System / Internet / FTP

Dateien via FTP und Shell übertragen

Historie
31.07.2001FTP-Verbindung wird im Skript geschlossen und der Client beendet (Hinweis von Jürgen Caspar)
11.01.2001Parameter der FTP-Anweisungen in Anführungszeichen gesetzt, daher Fehler-Toleranter
17.11.2000Als Prozedur umgeschrieben; ermöglicht nun das Kopieren von mehreren Dateien in einem Rutsch
14.10.2000Schlankerer Code durch Nutzung der Routinen TempDir und ShellX
??.??.19??Erste Version (nur ein Beispiel)
Die Dateiübertragung via FTP mit dem Internet Transfer Control arbeitet leider nicht sehr zuverlässig. Daher möchte ich hier eine einfache Lösung (via Batch und DOS-FTP-Client) vorstellen:
Public Sub FTPCopy( _
    Hostname As String, DestDir As String, _
    Username As String, Password As String, _
    ParamArray SourceFile() _
  )
  Dim FileNr As Long
  Dim TempFile As String
  Dim Files As Variant
  Dim i As Long

  'Initialisierung:
  FileNr = Freefile
  TempFile = TempDir() & "ftp.tmp"
  If IsArray(SourceFile(0)) Then
    Files = SourceFile(0)
  Else
    Files = SourceFile
  End If

  'Ein FTP-Skript erzeugen:
  Open TempFile for Output As #FileNr
  Print #FileNr, Username
  Print #FileNr, Password
  Print #FileNr, "mkdir """ & DestDir & """"
  Print #FileNr, "cd """ & DestDir & """"
  Print #FileNr, "binary"
  For i = LBound(Files) To UBound(Files)
    Print #FileNr, "put """ & Files(i) & """"
  Next i
  Print #FileNr, "close"
  Print #FileNr, "quit"
  Close #FileNr

  'FTP via Shell ausführen:
  ShellX "FTP -s:" & TempFile & " " & Hostname, vbHide

  'Aufräumen:
  Kill TempFile
End Sub
Sollen z.B. vier Dateien auf den Server mit der IP "10.195.129.2" (alternativ kann natürlich auch die URL angegeben werden) ins Server-Verzeichnis "backup" unter dem Account "schwider" mit dem Passwort "**pwd**" kopiert werden, so kann dies mit folgendem Code geschehen:
FTPCopy "10.195.129.2", "backup", "schwider", "**pwd**", _
    "c:\autoexec.bat", _
    "c:\windows\system\win.ini", _
    "\\SV0815\data\test.txt", _
    "d:\temp\html\index.htm"

© Jost Schwider, 30.04.2000-31.07.2001 - http://vb-tec.de/ftpshell.htm