Page 1 sur 1
					
				[R] Progressbar avec filecopy
				Posté : ven. 30 nov. 2012 17:22
				par sknano33
				hello tout le monde
i need you
je cherche a faire une progressbar avec un filecopy
voici mon script
► Afficher le texte
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
$fichiersource = "\\192.168.204.20\0_BRInfo\WEBSERVICES\webservice\soft\webservices.exe"
$fichier= "C:\webservice\soft\webservices.exe"
if FileGetTime($fichiersource,0,1) <> FileGetTime($fichier,0,1) Then
	_barredeprogression()
   Else
  ShellExecute  ($fichier)
   EndIf
 ;==================================================================
; BARRE DE PROGRESSION
Func _barredeprogression()
$fichiersource = $fichiersource  ;<---------------------------------- modifier la source ici
$fichier = $fichier;<---------------------------------- modifier la destination ici
$guidl = GUICreate("Telechargement", 300, 100, 387, 31)
$Progress = GUICtrlCreateProgress(25, 40, 250, 20)
GUISetState(@SW_SHOW)
$Input1 = GUICtrlCreateLabel("Veuillez patienter le fichier se télécharge, merci", 5, 10, 250, 20)
;$Input2 = GUICtrlCreateEdit($dest, 5, 40, 250, 20)
$label= GUICtrlCreateLabel("",125,70,50,20)
$poidssource = FileGetSize ($fichiersource)
$poidsdest = FileGetSize ($fichier)
$Download = FileCopy ($fichiersource, $fichier) ;Telecharge
While  $poidsdest <> $poidssource
		 $poidsdest = FileGetSize ($fichier)
    For $i=(($poidsdest/$poidssource)*100) to 100	   
        $pourcent = ($poidsdest/$poidssource)*100
		GUICtrlSetData($progress,$i)
        GUICtrlSetData($label,$pourcent&"%")
    Next
WEnd
ShellExecute  ($fichier)
GUIDelete($guidl)
EndFunc 
 ;==================================================================
Probleme 1 : La barre passe directement de 0 (au debut) a 100 ( a la fin du dl ) sans intermediaire
je pense que le probleme vient du fait que le poid du fichier de destination avec filecopy est directement le poid final
il n'y a pas une autre commande tel inetgetsize mais pour filecopy ?????
Probleme 2 : lié au premier je pense , mon label passe aussi de 0 a 100 %
mikell si tu nous regarde (  

 tu as vu j'ai bien progressé 

 )
merci d'avance a tous
 
			
					
				Re: [..] Progressbar avec filecopy
				Posté : sam. 01 déc. 2012 10:53
				par jguinch
				Bonjour.
Pas évident ça...
Peut être que la réponse est par là : 
http://www.autoitscript.com/forum/topic ... -progress/
Bon courage
 
			
					
				Re: [..] Progressbar avec filecopy
				Posté : lun. 03 déc. 2012 09:43
				par sknano33
				Salut et merci 
mais la c'est un peu trop compliqué pour moi
il n'y a pas plus simple???
pour tant de fonction dans inetget et pas pour filecopy??
a vous lire
			 
			
					
				Re: [..] Progressbar avec filecopy
				Posté : lun. 03 déc. 2012 11:29
				par mikell
				Une progressbar ne marchera pas avec FileCopy qui est une fonction bloquante
Faut passer par du FileWrite
Sinon si tu veux du simple ya ça
Code : Tout sélectionner
$s = @scriptdir & "\fichier"
$d = @scriptdir & "\dossier\"
_FileCopy($s, $d)
Func _FileCopy($source, $dest)
    $oShell = ObjCreate("shell.application")
    $oShell.namespace($dest).CopyHere($source,256)  ; 256 = affiche la progressbar de windows
EndFunc
 
			
					
				Re: [..] Progressbar avec filecopy
				Posté : lun. 03 déc. 2012 11:43
				par GaRydelaMer
				Bonjour
si c'est possible j'utilise une fonction du forum US:
http://www.autoitscript.com/forum/topic ... o-own-gui/
Y a des exemples.
@sknano33
Va sur la page cité dessus copie tous le texte tu mets ca dans un nouveau script "GUI_MultiFileCopy.au3" enlève les exemples au début du script.
Ensuite dans ton script principal tu ajoutes un #includes "GUI_MultiFileCopy.au3"
Pour lancer la copie dans ton script principal tu appelles la fonction comme dans les exemples en fonction de ton choix.
J'ai modifier la fonction pour la mettre en FR et j'utilise une autre fonction pour créer la liste des fichiers à copier si vous avez besoin je vous donnerais ça.
Mais pour commencer utilise la version originale.
 
			
					
				Re: [..] Progressbar avec filecopy
				Posté : lun. 03 déc. 2012 14:12
				par Sea
				Tien j'avais fais ça pour répondre à une autre personne => 
http://autoitscript.fr/forum/viewtopic. ... 916#p68916
En passant par les API windows c'est très facile à faire(et bien plus rapide/propre que les trucs balancé avant vu que c'est des api windows 

)
 
			
					
				Re: [R] Progressbar avec filecopy
				Posté : lun. 03 déc. 2012 17:44
				par sknano33
				Merci encore vous êtes des chefs
mikell ton script simple et parfait
GaRydelaMer un peu dur dur pour moi quand même
Sea ca roule aussi
bon ben j'ai qu'a mettre mon [R]
merci encore
			 
			
					
				Re: [R] Progressbar avec filecopy
				Posté : ven. 04 janv. 2013 09:18
				par Utilisateur 3309 supprimé
				Bonjour,
j'ai voulu tester le bout de code de mikell mais avec des wildcard et ca n'a pas l'air de fonctionner, je n'ai aucun message d'erreur...c'est comme ci l'opération se terminait instantanément... voici a quoi ressemble mon code.
Code : Tout sélectionner
$s = "\\serveur\dossier\*facture*"
$d = "c:\dossier\facture.pdf"
_FileCopy($s, $d)
Func _FileCopy($source, $dest)
    $oShell = ObjCreate("shell.application")
    $oShell.namespace($dest).CopyHere($source,256)  ; 256 = affiche la progressbar de windows
EndFunc
Serait-ce un probleme de "*" ??
mon dossier source est rempli de fichiers sous la forme xxxxxx
factureyyyyy.pdf
facture étant un numéro.
 
			
					
				Re: [R] Progressbar avec filecopy
				Posté : ven. 04 janv. 2013 09:53
				par GhostLine
				$s = "\\serveur\dossier\*facture*
.*"
A tester 

 
			
					
				Re: [R] Progressbar avec filecopy
				Posté : ven. 04 janv. 2013 10:49
				par Utilisateur 3309 supprimé
				j'y ai pensé mais c'est pareil... 

j'ai complété mon message précédent, il manquait des infos importantes.
Donc le code dans le message précédent ne fonctionne pas, mais si je fais comme ci-dessous alors ça fonctionne mais 
mais je perds le renommage du fichier destination que j'effectue dans le code précédent. Et ca ne m'arrange pas trop...on ne peut pas donner un nouveau nom de fichier en destination ??? pourtant on peut le faire avec le 
filecopy natif.
Code : Tout sélectionner
$s = "\\serveur\dossier\*facture*.*"
$d = "c:\dossier\"
_FileCopy($s, $d)
Func _FileCopy($source, $dest)
    $oShell = ObjCreate("shell.application")
    $oShell.namespace($dest).CopyHere($source,256)  ; 256 = affiche la progressbar de windows
EndFunc
 
 
			
					
				Re: [R] Progressbar avec filecopy
				Posté : ven. 04 janv. 2013 10:53
				par GhostLine
				Utiliser Filemove pour renommer ton fichier après l'avoir copié ? Comme dit dans la doc de Filemove : "Because AutoIt lacks a "FileRename" function, use FileMove to rename a file!" 

 
			
					
				Re: [R] Progressbar avec filecopy
				Posté : ven. 04 janv. 2013 11:14
				par Utilisateur 3309 supprimé
				ca sort du contexte de la fonction 
_filecopy  qui permet d'avoir la fenetre de progression...
A l'heure actuelle mon code marche tres bien avec un filecopy 
mais je n'ai pas de barre de progression, d'ou mon post ici  
 
EDIT:
ah j'ai compris ce que tu veux dire....renomer le fichier après l'avoir copié avec la fonction....effectivement ca va marcher, donc au pire on peut effectivement faire comme ça, m'enfin j'aurai aimé un truc plus "propre"  

 
			
					
				Re: [R] Progressbar avec filecopy
				Posté : ven. 04 janv. 2013 12:38
				par GhostLine
				Bah, le principal n'est il pas que ça fonctionne ?  

 
			
					
				Re: [R] Progressbar avec filecopy
				Posté : ven. 04 janv. 2013 13:01
				par Sea
				Regarde ce que j'ai posté plus haut.... C'est propre c'est interne a windows et rapide enfin bref a toi de voir...
			 
			
					
				Re: [R] Progressbar avec filecopy
				Posté : ven. 04 janv. 2013 14:19
				par Utilisateur 3309 supprimé
				j'ai vu, mais ca ne me convient pas car cela necessite d'indiquer manuellement les fichiers source et destination, ce que je veux faire c'est du 100% automatique, déclenché par une tache planifiée. la visu de la barre de progression c'est juste pour indiquer que le serveur est en train de copier des fichiers si on va dessus. Le bout de code de Mikell me semblait plus simple car il ne fait que quelques lignes. mais merci quand même  

 
			
					
				Re: [R] Progressbar avec filecopy
				Posté : ven. 04 janv. 2013 14:23
				par Sea
				Je ne vois pas ou ai le problème...
Dans mon code posté ici 
http://autoitscript.fr/forum/viewtopic. ... 916#p68916
Il suffit de modifier 
Code : Tout sélectionner
$file_a_copier = FileOpenDialog('Select file',@ScriptDir,'All files (*.*)')
$destination = FileSaveDialog('Save your files',@ScriptDir,'All files(*.*)')
 
par 
Code : Tout sélectionner
$file_a_copier = C://ton fichier
$destination = C://Ton fichier de destination
 
Tu peux trait bien automatisé cela...
 
			
					
				Re: [R] Progressbar avec filecopy
				Posté : lun. 07 janv. 2013 22:32
				par Utilisateur 3309 supprimé
				merci sea ! effectivement j'ai pas percuté  
 
  