Page 1 sur 1
[R] Télécharger plusieurs fichiers de mon FTP vers mon PC
Posté : mer. 13 août 2014 10:49
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
;==================================
Re: [R] Télécharger fichier Ftp & Supprmer fichier Ftp
Posté : ven. 15 août 2014 21:00
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
Re: [..] Télécharger fichier Ftp & Supprmer fichier Ftp
Posté : sam. 16 août 2014 00:04
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.
@+
Re: [R] Télécharger fichier Ftp & Supprmer fichier Ftp
Posté : sam. 16 août 2014 11:54
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.
Re: [..] télécharger plusieurs fichiers de mon FTP vers mon
Posté : sam. 16 août 2014 19:54
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
Code : Tout sélectionner
#include <FTPEx.au3>
#include <Array.au3>
Local $server = 'ftp.csx.cam.ac.uk'
Local $username = ''
Local $pass = ''
Local $folderINftp = ''
Local $localFolder = @ScriptDir
Local $Open = _FTP_Open('MyFTP Control')
If $Open <> 0 Then
$Conn = _FTP_Connect($Open, $server, $username, $pass)
If $Conn <> 0 Then
If _FTP_DirSetCurrent($Conn, $folderINftp) Then
Local $aFile = _FTP_ListToArray($Conn, 2)
If $aFile[0] <> 0 Then
_ArraySort($aFile,0,1)
For $i=1 To $aFile[0]
If StringMid($aFile[$i],StringLen($aFile[$i])-4) == ".jpg" then
If _FTP_FileGet($Conn, $aFile[$i], $localFolder & "\" & $aFile[$i] ) Then
If _FTP_FileDelete($Conn, $aFile[$i]) Then
;to do
;msgbox,consoleWrite,filewrite("Log.log","Ca marche!!)
Else
;to do
;msgbox,consoleWrite,filewrite("Log.log","marche pas !!)
EndIf
Else
;to do
;msgbox,consoleWrite,filewrite("Log.log","marche pas !!)
EndIf
Else
;to do
;msgbox,consoleWrite,filewrite("Log.log","marche pas !!)
EndIf
Next
Else
;to do
;msgbox,consoleWrite,filewrite("Log.log","marche pas !!)
EndIf
Else
;to do
;msgbox,consoleWrite,filewrite("Log.log","marche pas !!)
EndIf
Else
;to do
;msgbox,consoleWrite,filewrite("Log.log","marche pas !!)
EndIf
Else
;to do
;msgbox,consoleWrite,filewrite("Log.log","marche pas !!)
EndIf
Local $Ftpc = _FTP_Close($Open)