Page 1 sur 1

[..] Copie dossier ou se trouve le programme autoit

Posté : lun. 14 nov. 2011 07:04
par gege
bonjour
après plusieurs recherches infructueuses sur la
Copie de dossiers et fichier où se trouve le programme autoit.
je voudrais copier le contenu de la clé USB où se trouve le programme
exemple : dossier de destination qui seraient des variables
(essayez de me donner une réponse concrète avec exemple car je suis très novice dans ce langage)

Code : Tout sélectionner

FileCopy("*.*",$Destination&"\Sauvegarde\ variables\ variables"&" "&@MON&"-"&@MDAY&"-"&@YEAR&" "&@HOUR&"h"&@MIN&"m"&@SEC&"s")
je remercie d'avance pour le temps consacré à ma réponse

Re: [..] Copie dossier ou se trouve le programme autoit

Posté : lun. 14 nov. 2011 07:58
par TT22
Il faut utiliser #RequireAdmin en haut de ton script pour qu'il se lance en administrateur et qu'il ait la permission d'accéder au dossier Program Files.

Re: [..] Copie dossier ou se trouve le programme autoit

Posté : lun. 14 nov. 2011 08:07
par Tlem
En ce basant sur ce que vous donnez, vous pouvez envisager ceci :

Code : Tout sélectionner

$variables = "xyz"
$Destination = @ScriptDir & "\Sauvegarde\" & $variables & "\" & $variables & " " & @MON & "-" & @MDAY & "-" & @YEAR & " " & @HOUR & "h" & @MIN & "m" & @SEC & "s"
FileCopy("*.*", $Destination)
Ceci dit, vous ne pourrez dans ce cas sauvegarder que les fichiers du répertoire mais pas les sous dossiers.
Si vous avez l'intention d'inclure des sous dossiers, il vous faudra passer pas la lecture de la structure des fichiers/dossiers dans un tableau, puis faire une copie par l'intermédiaire d'une boucle.
Comme ceci :

Code : Tout sélectionner

$variables = "xyz"
$Destination = @ScriptDir & "\Sauvegarde\" & $variables & "\" & $variables & "_" & @MON & "-" & @MDAY & "-" & @YEAR & "_" & @HOUR & "h" & @MIN & "m" & @SEC & "s"
$SearchDir = "C:\Temp"

$hsearch = FileFindFirstFile($SearchDir & "\*.*") ; On crée un handle de recherche.

While 1 ; Début de la boucle de recherche
    $search = FileFindNextFile($hsearch) ; Cherche l'élément suivant
    If @error Then ExitLoop ; Si il n'y à plus rien à chercher, on sort

    If @extended = 1 Then ; Si l'élément trouvé est un dossier
        DirCopy($SearchDir & "\" & $search, $Destination, 1) ; alors on utilise un DirCopy
    Else ; sinon
        FileCopy($SearchDir & "\" & $search, $Destination, 9) ; on utilise un FileCopy
    EndIf ; fin des tests
WEnd ; Fin de la boucle de recherche

FileClose($search) ; on ferme le handle de recherche

Re: [..] Copie dossier ou se trouve le programme autoit

Posté : lun. 14 nov. 2011 18:01
par mikell
Tlem a écrit :Ceci dit, vous ne pourrez dans ce cas sauvegarder que les fichiers du répertoire mais pas les sous dossiers.
Si vous avez l'intention d'inclure des sous dossiers, il vous faudra passer pas la lecture de la structure des fichiers/dossiers dans un tableau
Boss, cette fonction fait une copie intégrale avec les sous-dossiers

Code : Tout sélectionner

; si clé USB source = H:

$racine = @desktopdir  ; bureau
$variable1 = "dossier1"
$date = @MON & "-" & @MDAY & "-" & @YEAR & " " & @HOUR & "h" & @MIN & "m" & @SEC & "s"
$destination = $racine & "\" & $variable1 & "\" & $date

If NOT FileExists($destination) Then DirCreate($destination)
_FileCopy("H:\*",$destination)   
ShellExecute($destination)

Func _FileCopy($source, $dest)
    $winShell = ObjCreate("shell.application")
    $winShell.namespace($dest).CopyHere($source,256)  ; 256 = affiche la progressbar de windows
EndFunc

Re: [..] Copie dossier ou se trouve le programme autoit

Posté : lun. 14 nov. 2011 22:12
par Tlem
@mikell
DirCopy() fait sa aussi. :P

gege à dit :
Copie de dossiers et fichier où se trouve le programme autoit.
je voudrais copier le contenu de la clé USB où se trouve le programme
En ce qui me concerne, j'ai hésité à penser qu'il voulait tout simplement copier la totalité du contenu de la clé USB, car entre
Copie de dossiers et fichier où se trouve le programme autoit
et
Copie des dossiers et fichiers où se trouve le programme autoit
je fait une grande différence.
De plus, le masque proposé était *.* et non *, ce qui fait encore une autre différence. :wink:

Ceci dit ta solution est peut être la réponse attendue par gege !

Re: [..] Copie dossier ou se trouve le programme autoit

Posté : mar. 15 nov. 2011 18:53
par gege
Bonjour,

Merci à tous ceux qui se sont penchés sur mon problème, résolut grâce à vous.
Formule ci-jointe
j'ai réussi à faire une guise avec 2 menus déroulants avec à l'intérieur des noms de classes et d'élèves pour créer une suite de dossiers
Serait il possible d'avoir un complément d'informations
Je souhaiterais que les classes + élèves soient dans une base de données style fichier *.txt,ou *.ini
Pour corser l'affaire, il faudrait que chaque classe corresponde à un groupe d'élèves
puis tant que l'on n'a pas sélectionné classe et élèves il soit impossible de valider les données
j'ai créé un bouton quitter que je n'arrive pas à faire fonctionner
merci encore d'avance

Code : Tout sélectionner

#include <GuiConstants.au3>
HotKeySet ( "{ESC}", "quit")
GuiCreate ( "", 500, 200, -1, -1)
$CLACE = GUICtrlCreateCombo("", 40, 24, 249, 25)
GuiCtrlSetData (-1, "Quel est  CLACE| 4A| 4B| 5A| 5B| 6A| 6B")
GUICtrlSetFont(-1, 15, 400, 2, "Arial")
$MOM = GuiCtrlCreateCombo ( "", 40, 80, 249, 20)
GuiCtrlSetData (-1, "NOM PRENOM|gerard|Bruno|Francoi|Philip")
GUICtrlSetFont(-1, 15, 400, 2, "Arial")
$Bouton = GuiCtrlCreateButton ("OK", 336, 24, 65, 41)
GUICtrlSetFont(-1, 11, 400, 0, "Arial")
$exititem = GUICtrlCreateButton("QUITTIER", 336, 120, 80, 41)
GUICtrlSetFont(-1, 11, 400, 0, "Arial")
GuiSetState()
$exititem = TrayCreateItem("Quitter")
$n = GuiCtrlRead ($CLACE, 1)
$n1 = GuiCtrlRead ($MOM, 1)
While 1
    $Msg = GUIGetMsg ()
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            quit()

    Case $Bouton
    $n = GuiCtrlRead ($CLACE)
    $n1 = GuiCtrlRead ($MOM)
;------------------------------j'ai
    Local $monDossierFinal="C:\toto\"
    Local $input

    $monDossierFinal=$monDossierFinal&$n&"\"
    $monDossierFinal=$monDossierFinal&$n1&" "&@MON&"-"&@MDAY&"-"&@YEAR&" "&@HOUR&"h"&@MIN&"m"

msgbox(0,"", "CLACE = " & $n & @CRLF & "NOM-PRENOM = " & $n1)
MsgBox(0,"",$monDossierFinal&" "&@MON&"-"&@MDAY&"-"&@YEAR&" "&@HOUR&"h"&@MIN&"m")

DirCopy(@ScriptDir, "C:\Backups\LECTEURS-MP3\"&$n&"\"&$n1&""&" "&@MON&"-"&@MDAY&"-"&@YEAR&" "&@HOUR&"h"&@MIN&"m"&@SEC&"s");marche

EndSwitch
WEnd

Func quit()
    Exit 0
EndFunc
 

Re: [..] Copie dossier ou se trouve le programme autoit

Posté : mar. 15 nov. 2011 19:37
par gege
rectificative

Code : Tout sélectionner

#include <GuiConstants.au3>
HotKeySet ( "{ESC}", "quit")
GuiCreate ( "", 500, 200, -1, -1)
$CLACE = GUICtrlCreateCombo("", 40, 24, 249, 25)
GuiCtrlSetData (-1, "Quel est  CLACE| 4A| 4B| 5A| 5B| 6A| 6B")
GUICtrlSetFont(-1, 15, 400, 2, "Arial")
$MOM = GuiCtrlCreateCombo ( "", 40, 80, 249, 20)
GuiCtrlSetData (-1, "NOM PRENOM|gerard|Bruno|Francoi|Philip")
GUICtrlSetFont(-1, 15, 400, 2, "Arial")
$Bouton = GuiCtrlCreateButton ("OK", 336, 24, 65, 41)
GUICtrlSetFont(-1, 11, 400, 0, "Arial")
$exititem = GUICtrlCreateButton("QUITTIER", 336, 120, 80, 41)
GUICtrlSetFont(-1, 11, 400, 0, "Arial")
GuiSetState()
$exititem = TrayCreateItem("Quitter")
$n = GuiCtrlRead ($CLACE, 1)
$n1 = GuiCtrlRead ($MOM, 1)
While 1
    $Msg = GUIGetMsg ()
    Switch $Msg
        Case $GUI_EVENT_CLOSE
            quit()
        Case $Bouton
            $n = GuiCtrlRead ($CLACE)
            $n1 = GuiCtrlRead ($MOM)
msgbox(0,"", "CLACE = " & $n & @CRLF & "NOM-PRENOM = " & $n1)

DirCopy(@ScriptDir, "C:\Backups\LECTEURS-MP3\"&$n&"\"&$n1&""&" "&@MON&"-"&@MDAY&"-"&@YEAR&" "&@HOUR&"h"&@MIN&"m"&@SEC&"s")

EndSwitch
WEnd

Func quit()
    Exit 0
EndFunc

Re: [..] Copie dossier ou se trouve le programme autoit

Posté : mar. 15 nov. 2011 19:57
par mikell
Tlem a écrit :Si vous avez l'intention d'inclure des sous dossiers, il vous faudra passer pas la lecture de la structure des fichiers/dossiers dans un tableau
Tlem a écrit :@mikell DirCopy() fait sa aussi.
Tsss ...
Le boss qui fait de la tétracapillotomie Image

Re: [..] Copie dossier ou se trouve le programme autoit

Posté : mar. 15 nov. 2011 22:00
par Tlem
Je ne vois pas en quoi je ferais de la langue de bois !!!
Je dit bien :
Tlem a écrit :Si vous avez l'intention d'inclure des sous dossiers
et non
Si vous avez l'intention d'inclure les sous dossiers
Il y à une nuance qui peut paraitre anodine de prime abord, mais qui à toute son importance dans un code informatique !