Page 1 sur 1

[R] Dircopy / copier "certains" dossiers.

Posté : mar. 03 juin 2008 11:46
par DimVar
Bonjour,

Je souhaiterais faire une copie de 5 dossiers, qui ont pour nom, l'heure à laquelle ils sont générés. Sous cette forme : HHMMSS, soit pour 10h22 et 25 sec --> 102225.

La fonction que j'aurais aimé employer :

Code : Tout sélectionner

DirCopy ("d:\data\10*", "c:\temp\,1)
Seulement, ca ne marche pas.
Je voudrais copier tous les dossiers du dossier "d:\data\" mais seulement ceux qui commence par 10.
Une idée ?

[edit]je precise que dans le dossier "data" se trouvent d'autres dossier commencant par exemple par 15 (dossiers de 15h)

Re: [..]Dircopy / copier "certains" dossiers.

Posté : mar. 03 juin 2008 12:14
par Tlem
Vous n'avez probablement pas bien lu ceci dans l'aide :
dest dir = Path of the destination dir (with no trailing backslash). e.g. "C:\Path_Copy"

Re: [..] Dircopy / copier "certains" dossiers.

Posté : mar. 03 juin 2008 13:31
par DimVar
Ok pour le backslash, mais meme sans, il semblerait que le caractere "*" ne soit pas pris en compte.
????
Si je formule autrement ma requette, ca donnerait :
Comment copier tous les dossiers commencant par "10" ?

Merci à vous.

Re: [..] Dircopy / copier "certains" dossiers.

Posté : mar. 03 juin 2008 14:39
par Tlem
Effectivement, la commande DirCopy n'accepte pas les caractères génériques.

Donc voici une alternative (Parmi tant d'autres) :

Code : Tout sélectionner

$Src = @ScriptDir           ; Le dossier source.
$Dst = @ScriptDir & "\Test" ; Le dossier de destination.
$Srch = "10*"               ; Le masque de recherche.

; Si la destination n'existe pas on la crée (A cause d'une limitation de DirMove)
If Not FileExists($Dst) Then DirCreate($Dst)

; On commence la recherche.
$search = FileFindFirstFile($Srch)

; Si pas de fichiers/dossiers touvés on sort.
If $search = -1 Then
    Exit
Else
; Boucle de recherche et d'action.
    While 1
        $file = FileFindNextFile($search)
        ; Si plus de fichiers/dossiers on sort.
        If @error Then ExitLoop
        
        ; Pour ne prendre en compte que les dossiers.
        If StringInStr(FileGetAttrib ($file), "D") Then
            DirMove($Src & "\" & $file, $Dst & "\" & $file, 1)
        EndIf

    WEnd

    FileClose($search)
EndIf

Re: [..] Dircopy / copier "certains" dossiers.

Posté : mar. 03 juin 2008 17:13
par DimVar
Comment se fait il que lorsque je lis ton code, je trouve ca super clair et trés logique. Alors quand je suis devant la page blanche, je sais pas par où commencer....
Faudrais, je pense, commencer par trouver un "ordre" à la création d'un programme.

En tout cas, GROS merci.
J'espere ne pas t'avoir pris trop de ton temps. C'est vraiment sympa.

Je clos le sujet.