[R] Télécharger plusieurs fichiers de mon FTP vers mon PC

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

[R] Télécharger plusieurs fichiers de mon FTP vers mon PC

#1

Message par Boulanza »

Bonjour,
Je vous pris de m’aider à compléter le scripte ci-dessous.
Je cherche :
1- A télécharger plusieurs fichiers sur mon FTP, mais un par un suivant la date inscrite sur chaque fichier.
2- Supprimer le fichier déjà téléchargé (1).
Merci

Code : Tout sélectionner

#include <Process.au3>
#include <FTPEx.au3>
;=====================================
Execut01()
Func  Execut01()
    Dim $appli1=  ImportFileInFtp()
    Dim $appli2=  SuppFileFtp()
        If Not IsAdmin() Then
    RunAsWait( $appli1,$appli2, "", 0, @ScriptFullPath, @ScriptDir)
EndIf
EndFunc
;========================================
Func ImportFileInFtp()
Local $UrlFtp = "http://Boulanza.com"
Local $sourceFtp = "/test/mesfichiers/"
$test= _RunDos('wget -r -l 1 -A.ini "'&$UrlFtp&""&$sourceFtp &'"') 
EndFunc
;========================================
Func SuppFileFtp()
$ftp_server = "xxx"
$ftp_username = "xxxx"
$ftp_password = "xxxx"

$ftpfolder = "test/mesfichiers"
Local $ftp_session
Local $h_Handle

$ftp_session = _FTP_Open("$ftp_session ")
;MsgBox(0, "Fichier:", $ftp_session)


$ftp_CS = _FTP_Connect($ftp_session, $ftp_server, $ftp_username, $ftp_password)

$nonhtm = _FTP_FindFileFirst ( $ftp_CS, $ftpfolder & "/*.*", $h_Handle )

While 1
    $nonhtm = _FTP_FindFileNext ( $h_Handle )
    If Not @error Then
If StringLen($nonhtm[10]) > 2 AND StringRight ( $nonhtm[10] , 4 ) <> ".*" Then 
            _FTP_FileDelete ( $ftp_CS, "/" & $ftpfolder & "/" & $nonhtm[10] )
        EndIf
    Else
        ExitLoop
    EndIf
WEnd
EndFunc
 ;==================================
 
Modifié en dernier par Boulanza le ven. 29 août 2014 19:15, modifié 2 fois.
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Télécharger fichier Ftp & Supprmer fichier Ftp

#2

Message par Boulanza »

Bonjour,
Dans mon cas, Wget.exe ne donne rien. Donc je retourne vers les fonctions Autoit.
Je cherche donc :
1- A télécharger plusieurs fichiers sur mon FTP, mais un par un suivant la date inscrite sur chaque fichier. (*.*)
2- Supprimer le fichier déjà téléchargé (1).

Le script de TopXm ci-dessous est bon pour mon cas, comment faire pour qu’il soit adapté à ma demande.
Merci pour votre aide.

Code : Tout sélectionner

;#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ProgressConstants.au3>

$ProgressForm = GUICreate("Téléchargement en cours ..", 182, 45, -1, -1, $DS_MODALFRAME)
$ProgressBar = GUICtrlCreateProgress(0, 0, 180, 20, $PBS_SMOOTH)
GUISetState(@SW_SHOW, $ProgressForm)

$URLtest = 'http://www.autoitscript.com/files/autoit3/autoit-v3-setup.exe'

[color=#0000BF]$URLtest = 'http://www.autoitscript.com/files/test/*.*'[/color]

DownloadFile($URLtest)                                                          ;On lance le téléchargement

Exit

Func DownloadFile($FileUrl, $ToFolder = @ScriptDir)
    Local $ArchiveName = StringTrimLeft($FileUrl, StringInStr($FileUrl, '/', 0, -1))    ;On définit le nom du fichier cible
    Local $hDownload = InetGet($FileUrl, $ToFolder & '\' & $ArchiveName, 1, 1)          ;On lance le téléchargement
    $aData = InetGetInfo($hDownload)                                                    ;On récupére la taille du fichier
    While $aData[1] = 0
        Sleep(100)                                                                      ;Nb : normalement la boucle n'est pas obligatoire
        $aData = InetGetInfo($hDownload)                                                ; ayant des soucis de connexion j'ai du passer par cette boucle
    WEnd
                                                                                        ;Taille du fichier =  $aData[1]

    GUICtrlSetData($ProgressBar, 0)                                                     ;init de la barre de progression

    While $aData[0] <  $aData[1]                                                                ;On boucle tant que le téléchargement n'est pas finalisé
        $aData = InetGetInfo($hDownload)
        GUICtrlSetData($ProgressBar, $aData[0] / $aData[1] * 100)                       ;On gére l'avancement de la barre de progression
        Sleep(100)                                                                      ;On temporise pour laisser du process au petits copains
    WEnd

    Local $aData = InetGetInfo($hDownload)  ;nb :   [1]=> Size      [2]=> Complete  [3] => Successful
    InetClose($hDownload)                   ;       [4]=> @Error    [5]=> @Extended     ;On ferme le Handle de l'InetGet

    If $aData[4] Or $aData[1] <> $aData[0] Or Not $aData[3]  Then
        ConsoleWrite("[Error] Download Failed ... " & @CRLF)
        Return SetError(69)
    Else
        ConsoleWrite( "Success : ")
        ConsoleWrite( " => Name..: " & $ArchiveName & @CRLF)
        ConsoleWrite(" => Folder: " & $ToFolder & @CRLF)
        ConsoleWrite(" => Size..: " & $aData[1] & @CRLF)
    EndIf
    Return $aData[3]                                                                    ;On retourne True si téléchargement OK
EndFunc
 
Faco
Niveau 4
Niveau 4
Messages : 80
Enregistré le : lun. 29 juil. 2013 18:09
Status : Hors ligne

Re: [..] Télécharger fichier Ftp & Supprmer fichier Ftp

#3

Message par Faco »

Hello,
je comprend pas tout dans ta demande.

-déjà, tu veux télécharger un truc de ton FTP sur ton ordi (par exemple) ou de ton ordi sur ton FTP ?

- "la date inscrite sur chaque fichier" ??? (Firefox_setup_2014-08-15.exe ???)

-télécharger et suppr?? ( je prend l'exemple d'un transfert du FTP vers ton ordi)

#############################Cas 1 ################################
--FTP-------------------------------------------------------------tonOrdi
1-Firefox_setup_2014-08-15.exe------------------------------Firefox_setup_2014-08-14.exe
2-Firefox_setup_2014-08-15.exe------------------------------""
3-Firefox_setup_2014-08-15.exe------------------------------Firefox_setup_2014-08-15.exe


#############################Cas 2 ################################
--FTP-------------------------------------------------------------tonOrdi
1-Firefox_setup_2014-08-15.exe---------------------------Firefox_setup_2014-08-14.exe
2-Firefox_setup_2014-08-15.exe---------------------------Firefox_setup_2014-08-14.exe;Firefox_setup_2014-08-15.exe
3-""-------------------------------------------------------------Firefox_setup_2014-08-14.exe;Firefox_setup_2014-08-15.exe

#####
Cas3,Cas4,...CasVingt-douze
######

C'est pas claire ta demande,c'est pour ça que tu n'a pas de réponse.

@+
Boulanza
Niveau 10
Niveau 10
Messages : 711
Enregistré le : mer. 31 juil. 2013 15:49
Status : Hors ligne

Re: [R] Télécharger fichier Ftp & Supprmer fichier Ftp

#4

Message par Boulanza »

Bonjour,
Merci pour votre réponse Faco.
Voila ce que je cherche comme solution:
1- A télécharger plusieurs fichiers de mon FTP, vers mon pc un par un suivant la date inscrite sur chaque fichier.
Par exemple : $URLtest = 'http://www.XXXX.com/test/*.jpg'
1- Fichier _du 12_04_2014-08-15_1h 21m.jpg
2- Fichier _du 12_04_2014-08-15_1h 25m.jpg
3- Fichier _du 12_04_2014-08-15_1h 31m.jpg
4- et suivants

2 - Supprimer le fichier déjà téléchargé
Par exemple :
Une fois le Fichier _du 12_04_2014-08-15_1h 21m.jpg est téléchargé dans mon pc, il faut le supprimer automatiquement de mon FTP.
Cordialement.
Faco
Niveau 4
Niveau 4
Messages : 80
Enregistré le : lun. 29 juil. 2013 18:09
Status : Hors ligne

Re: [..] télécharger plusieurs fichiers de mon FTP vers mon

#5

Message par Faco »

voila un petit truc, pas testé.

Petit bémol, c'est toi qui crée les .jpg? si oui tu devrai les nommés AAAA-MM-JJ HH-MM-SS pour que l'ordre alphanumérique fonctionne .( toi "Fichier _du 12_04_2014-08-15_1h 21m.jpg" est avant "Fichier _du 28_03_2014-08-15_1h 25m.jpg")
(parce-que pour les mettre dans l'ordre je me suis pas foulé '_arraysort' , sinon il faut codé un truc pour qu'il ordonné ce format...)

deuxième bémol, ligne 20 et 21, _FTP_FileGet et _FTP_Filedelete je leur donne en paramètre $aFile[$i] et je sais pas (pas testé) si il contient "//serveur/folder/toto.jpg" ou "toto.jpg", faudra adapté.
► Afficher le texte
Répondre