Avatar billede scarface335 Nybegynder
09. juni 2006 - 08:59 Der er 12 kommentarer og
1 løsning

Vb Script der kan oprette forbindelse til ftp server

Hej er der nogen der har et  VBscript der kan oprette forbindelse til en ftp server og overføre filer derfra.
Avatar billede neeo Nybegynder
09. juni 2006 - 09:33 #1
Sub ftpupload()
    Dim z
    z = vbCrLf
    MsgBox ("The Upload can take some minutes." & z & "Please click OK anf
wait for a confirmation!")
    Set ftp = New clsFTP
    ftp.Host = "ftp.anywhere.com"
    ftp.UserName = "uname"
    ftp.Password = "secret"
    ftp.RemoteDir = "/upload/database/accessdbs/"
    ftp.upload ("d:\test.mdb")
    MsgBox ftp.report
    Set ftp = Nothing
End Sub


http://groups.google.dk/group/microsoft.public.scripting.vbscript/browse_thread/thread/2cf3d4e391630b59/ef063d1b8a857b75?lnk=st&q=VBscript+Ftp+connection&rnum=1&hl=da#ef063d1b8a857b75
Avatar billede neeo Nybegynder
09. juni 2006 - 09:33 #2
se nærmere i linket
Avatar billede scarface335 Nybegynder
09. juni 2006 - 09:54 #3
Ved linjen "Set ftp = New clsFTP" får jeg fejlen klassen ikke defineret
Avatar billede ejvindh Ekspert
09. juni 2006 - 10:46 #4
Problemet er, at dette script forudsætter en klasse som skulle findes i google-tråden også, men som det i hvert fald ikke er lykkedes mig at downloade...

Nu har jeg jo tidligere vist, at jeg ikke er ekspert på netværksområdet, så tag det følgende med et vist forbehold. Men jeg tror enten du er nødt til at finde et eksternt værktøj for at få dette til at fungere, eller at bruge den indbyggede ftp-kommandolinie-fortolker. Sidstnævnte kan du læse om her:
http://www.computerhope.com/software/ftp.htm

Det er lidt omstændeligt, men det kan lade sig gøre :-)
Avatar billede tofte Juniormester
09. juni 2006 - 10:58 #5
Jeg har et script som benytter sig af det indbyggede ftp program i xp/2003 server. Det kan dog kun hente en fil man i forvejen kende navnet på. Men det kræver ikke andet end scriptet:
Function GetFTP(Host, Username, Password, LocalDir, RemoteDir, GetFile)
    Dim FSO, strMode, strFile, objFile, strErrorLog, strLog
    Dim Shell, WSX, ReturnCode, Output

    ' FTP.exe application with all parameters set.
    Const COMMAND_FTP = "ftp.exe -i -s:"
   
    ' Transfer mode for the FTP, change it to your liking.
    strMode            = "ascii" '=== "ascii" / "binary"
   
    ' File that holds all commands to ftp.exe
    strFile            = LocalDir & "\ftp.txt"
   
    ' File to log any ftp.exe errors that occur
    strErrorLog        = LocalDir & "\ftpErrors.txt"
   
    ' File to log all ftp.exe actions.
    strLog            = LocalDir & "\ftpLog.txt"
   
    ' Create the FSO object.
    Set FSO = CreateObject("Scripting.FileSystemObject")
   
    ' Create a Shell object (Used to execute applications from within a script).
    Set Shell = CreateObject("WScript.Shell")

    ' If the Command file doesn't exist then create it.
    If Not FSO.FileExists(strFile) Then FSO.CreateTextFile(strFile)
   
    ' Open the command textfile as a text file for Writing/Appending.
    Set objFile = FSO.OpenTextFile(strFile, 2, True)

    ' Used to set a default object.
    ' Inside it we will add all the commands to the commandfile needed to complete the ftp download.
    With objFile
   
        ' Add host to connection too.
        .WriteLine("open " & Host)

        ' Add Username to login with
        .WriteLine(Username)
       
        ' Add Password to login with
        .WriteLine(Password)

        ' Change Localdir path if needed.
        If LocalDir <> "" Then
            .WriteLine("lcd " & LocalDir)
        End If

        ' Change RemoteDir path if needed
        If RemoteDir <> "" Then
            .WriteLine("cd " & RemoteDir)
        End If

        ' Set the Transfer Mode on the FTP.
        .WriteLine(strMode)

        ' Add a line to Get/download the wanted file.
        If GetFile <> "" Then
            .WriteLine("get " & GetFile)
        End If

        ' Exit FTP Client
        .WriteLine("bye")

        ' Close the Command textfile
        .Close()
    End With


    ' Execute the Application with the Command textfile as parameter.
    Set WSX = Shell.Exec(COMMAND_FTP & strFile)

        ' Collect ReturnCode/Errors for debugging.
        Set ReturnCode = WSX.StdErr
       
        ' Collect output from the application for debugging.
        Set Output = WSX.stdOut

        ' Put the collected ReturnCode/Errors data into a textfile
        Set objFile = FSO.OpenTextFile(strErrorLog, 2, True)
            ' Write/Append to the file.
            objFile.Write(ReturnCode.ReadAll())
            ' Close the file object
            objFile.Close()

        ' Put the collected output data into a textfile
        Set objFile = FSO.OpenTextFile(strLog, 2, True)
            ' Write/Append to the file.
            objFile.Write(Output.ReadAll())
            ' Close the file object
            objFile.Close()

        ' Release the file object.
        Set objFile = nothing

    ' Delete the Command file so it is guaranteed empty for next command input.
    FSO.DeleteFile strFile, True

    ' Release all objects.
    Set FSO = Nothing
    Set ReturnCode = Nothing
    Set Output = Nothing
    Set WSX = Nothing
End Function
Avatar billede tofte Juniormester
09. juni 2006 - 10:59 #6
som så bare kaldes med
GetFTP Host, Username, Password, LocalDir, RemoteDir, GetFile
navnene burde give sig selv, men localdir, er hvis man ønsker den downloadet til en bestemt mappe og GetFile er navnet på filen man vil hente.
Avatar billede scarface335 Nybegynder
09. juni 2006 - 11:39 #7
Hej hvordan vælger jeg hvor filen skal placeres lokalt, lige nu havner den altid i det bib jeg kørere scriptet fra
Avatar billede scarface335 Nybegynder
09. juni 2006 - 11:40 #8
Men bortset fra det tofte, så virker det sku så du skal nok få dine point og tak for hjælpen, håber du lige kan løse ovenstående sprøgsmål. På forhånd tak
Avatar billede ejvindh Ekspert
09. juni 2006 - 12:55 #9
Det er variablen LocalDir du skal bruge der :-)
Avatar billede scarface335 Nybegynder
09. juni 2006 - 13:55 #10
Det troede jeg også men det er det ikke, det er funktionen get & getFile der skal skrives sådan for at vælge dest "get" & getfile " " & destfile

Men tak for hjælpen nu får du dine point
Avatar billede scarface335 Nybegynder
09. juni 2006 - 13:57 #11
Hej tofte ved ikke lige hvad der gik galt men skriv lige hvis du ikke har fået dine point
Avatar billede scarface335 Nybegynder
15. juni 2006 - 15:36 #12
Det Virker
Avatar billede tofte Juniormester
17. juni 2006 - 10:36 #13
Er lige kommet tilbage fra ferie. Godt at det virker. Jeg har dog ikke fået mine points :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester