IL n'est pas terminé, mais avance bien. Je rajouterai la possibilité de Glisser/deposer les dossiers directement, des couleurs, de l'aide pour les masques, puis surement d'autres options.
Il permet de faire une multi-selection, multi-deplacement, copiage, suppression, bref j'espère la totale au niveau du management des fichiers. Si vous avez d'autres idées n'hesitez pas a proposer.
► Afficher le textePart1
Code : Tout sélectionner
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <FileListToArrayXT.au3>
#include <GuiTreeView.au3>
#include <Array.au3>
#Include <File.au3>
Global $chemin = @ScriptDir&"\",$filter = "*.txt;*.php;???.doc",$recursive = False
Global $fichiers
Global $hTreeView,$hItem
$Form1 = GUICreate("File Manager By Timmalos Version 9.12.29", 1000, 700, 200, 10)
$Group0 = GUICtrlCreateGroup("Options du dossier", 16, 4, 545, 65)
$g0_Button1 = GUICtrlCreateButton("Changer de dossier", 24, 24, 185, 20, $WS_GROUP)
$g0_Label1 = GUICtrlCreateLabel("Chemin : "&$chemin, 24, 48, 500, 18)
$g0_Checkbox1 = GUICtrlCreateCheckbox("Afficher les fichiers Recursifs", 234, 24, 170, 25)
$g0_Label2 = GUICtrlCreateLabel("Masque: ", 405, 30, 60, 15)
$g0_Input1 = GUICtrlCreateInput($filter, 452, 28, 100, 21)
$Group1 = GUICtrlCreateGroup("Selection des fichiers", 16, 80, 545, 81)
$g1_Label1 = GUICtrlCreateLabel("Masque de selection:", 24, 110, 68, 34)
$g1_Input1 = GUICtrlCreateInput("[.]*", 96, 115, 153, 21)
$g1_Checkbox1 = GUICtrlCreateRadio("Tout Selectionner", 424, 110, 113, 17)
$g1_Checkbox2 = GUICtrlCreateRadio("Tout Deselectionner", 424, 130, 113, 17)
$g1_Combo1 = GUICtrlCreateCombo("Crées", 232, 88, 73, 25)
GUICtrlSetData(-1, "Ouverts|Modifiés")
$g1_Combo2 = GUICtrlCreateCombo("Avant le", 312, 88, 41, 25)
GUICtrlSetData(-1, "Après le")
$g1_Radio1 = GUICtrlCreateRadio("Fichiers", 168, 88, 65, 17)
$g1_Date1 = GUICtrlCreateDate("2009/12/30 11:27:26", 360, 88, 177, 25)
$Group2 = GUICtrlCreateGroup("Actions à effectuer", 16, 170, 545, 359)
$g2_List1 = GUICtrlCreateList("Suppression", 56, 224, 169, 227)
GUICtrlSetData(-1,"Renommage|Copie|Déplacement|Sauvegarde sur Internet")
$g2_Label1 = GUICtrlCreateLabel("Que voulez-vous faire avec ces fichiers?", 40, 192, 196, 17)
$g2_Group4 = GUICtrlCreateGroup("Paramètres", 256, 224, 281, 225)
GUICtrlSetState(-1,$GUI_HIDE)
$g2_Radio1 = GUICtrlCreateRadio("Repertoire Prédefini", 272, 256, 257, 25)
GUICtrlSetState(-1,$GUI_HIDE)
$g2_Radio2 = GUICtrlCreateRadio("Repertoire variant en fonction du nom", 272, 280, 257, 25)
GUICtrlSetState(-1,$GUI_HIDE)
$g2_Input1 = GUICtrlCreateInput("c:\{extension_fichier}\{nom_fichier}\{len_nom_fichier}\{taille_fichier}\{date_creation}\{date_modification}\", 360, 312, 169, 21)
GUICtrlSetState(-1,$GUI_HIDE)
$g2_Label2 = GUICtrlCreateLabel("Dossier: ", 272, 312, 84, 17)
GUICtrlSetState(-1,$GUI_HIDE)
$g2_Button2 = GUICtrlCreateButton("Selectionner le dossier", 272, 312, 250, 21, $WS_GROUP)
GUICtrlSetState(-1,$GUI_HIDE)
$g2_Button1 = GUICtrlCreateButton("Procédez aux Modifications", 64, 464, 465, 49, $WS_GROUP)
$Group3 = GUICtrlCreateGroup("Liste des Fichiers à modifier", 570, 4, 410, 669)
Local $iStyle = BitOR($TVS_EDITLABELS, $TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS, $TVS_CHECKBOXES)
$hTreeView = GUICtrlCreateTreeView(578, 25, 394, 640, $iStyle, $WS_EX_CLIENTEDGE)
$Group4 = GUICtrlCreateGroup("Import/Export des Paramètres", 16, 536, 545, 137)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $g0_Button1
$chemin_old = $chemin
$chemin = FileSelectFolder("Veuillez selectionner le dossier","",1,@ScriptDir)
If $chemin = "" then $chemin = $chemin_old
If StringRight($chemin,1) <> "\" THen $chemin &="\"
$recursive = Guichecked(GuiCtrlRead($g0_Checkbox1))
$filter = GuiCtrlRead($g0_Input1)
GUICtrlSetData($g0_Label1,"Chemin : "&$chemin)
$fichiers = search($chemin,$filter,$recursive)
put_data()
Case $g0_Input1
;MsgBox(0,"","")
$recursive = Guichecked(GuiCtrlRead($g0_Checkbox1))
$filter = GuiCtrlRead($g0_Input1)
GUICtrlSetData($g0_Label1,"Chemin : "&$chemin)
$fichiers = search($chemin,$filter,$recursive)
put_data()
Case $g0_Checkbox1
;MsgBox(0,"","")
$recursive = Guichecked(GuiCtrlRead($g0_Checkbox1))
$filter = GuiCtrlRead($g0_Input1)
GUICtrlSetData($g0_Label1,"Chemin : "&$chemin)
$fichiers = search($chemin,$filter,$recursive)
put_data()
Case $g1_Checkbox1
set_checked(1)
Case $g1_Checkbox2
set_checked(0)
Case $g1_Input1
set_checked(GuiCtrlRead($g1_Input1))
Case $g2_Radio1
GUICtrlSetState($g2_Button2,$GUI_SHOW)
GUICtrlSetState($g2_Input1,$GUI_HIDE)
GUICtrlSetState($g2_Label2,$GUI_HIDE)
Case $g2_Radio2
GUICtrlSetState($g2_Button2,$GUI_HIDE)
GUICtrlSetState($g2_Input1,$GUI_SHOW)
GUICtrlSetState($g2_Label2,$GUI_SHOW)
Case $g2_List1
Switch GuiCtrlRead($g2_List1)
Case "Suppression"
GUICtrlSetState($g2_Group4,$GUI_HIDE)
GUICtrlSetState($g2_Radio1,$GUI_HIDE)
GUICtrlSetState($g2_Radio2,$GUI_HIDE)
GUICtrlSetState($g2_Button2,$GUI_HIDE)
GUICtrlSetState($g2_Input1,$GUI_HIDE)
GUICtrlSetState($g2_Label2,$GUI_HIDE)
Case "Renommage"
Case "Copie"
GUICtrlSetState($g2_Group4,$GUI_SHOW)
GUICtrlSetState($g2_Radio1,$GUI_SHOW)
GUICtrlSetState($g2_Radio2,$GUI_SHOW)
Case "Déplacement"
GUICtrlSetState($g2_Group4,$GUI_SHOW)
GUICtrlSetState($g2_Radio1,$GUI_SHOW)
GUICtrlSetState($g2_Radio2,$GUI_SHOW)
Case "Sauvegarde sur Internet"
EndSwitch
Case $g2_Button2
If Not IsDeclared("Chemin_copie") Then $Chemin_copie = ""
$chemin_old = $Chemin_copie
$Chemin_copie = FileSelectFolder("Veuillez selectionner le dossier de Copie","",1,@ScriptDir)
If $Chemin_copie = "" then $Chemin_copie = $chemin_old
If StringRight($Chemin_copie,1) <> "\" THen $Chemin_copie &="\"
MsgBox(0,"File Manager","Le Dossier de Copie est:"&@CRLF&$Chemin_copie)
Case $g2_Button1
Local $nb[Ubound($fichiers)],$x=1
For $i = 1 to Ubound($fichiers)-1
If _GUICtrlTreeView_GetChecked($hTreeView, $hItem[$i]) Then
$nb[$x] = $i
$x+=1
EndIf
Next
Redim $nb[$x]
Switch GuiCtrlRead($g2_List1)
Case "Suppression"
For $i = 1 to Ubound($nb)-1
FileDelete($chemin&$fichiers[$nb[$i]])
Next
Case "Copie"
If Guichecked(GuiCtrlRead($g2_Radio1)) Then
If NOT IsDeclared("Chemin_copie") Or $Chemin_copie = "" Then
MsgBox(1,"File Manager","Vous devez choisir votre dossier de copie.")
ContinueLoop
EndIf
For $i = 1 to Ubound($nb)-1
FileCopy($chemin&$fichiers[$nb[$i]],$Chemin_copie&$fichiers[$nb[$i]])
Next
ElseIf Guichecked(GuiCtrlRead($g2_Radio2)) Then
$Chemin_copie = GUICtrlRead($g2_Input1)
If $Chemin_copie == "" Then
MsgBox(1,"File Manager","Vous devez choisir votre dossier de copie.")
ContinueLoop
EndIf
For $i = 1 to Ubound($nb)-1
$split0 = StringSplit($fichiers[$nb[$i]],"\")
$split = StringSplit($split0[Ubound($split0)-1],".")
$Chemin_copie = StringReplace($Chemin_copie,"{date_creation}",FileGetTime($chemin&$fichiers[$nb[$i]],1))
$Chemin_copie = StringReplace($Chemin_copie,"{date_modification}",FileGetTime($chemin&$fichiers[$nb[$i]],0))
$Chemin_copie = StringReplace($Chemin_copie,"{nom_fichier}",$split[1])
$Chemin_copie = StringReplace($Chemin_copie,"{extension_fichier}",$split[2])
$Chemin_copie = StringReplace($Chemin_copie,"{len_nom_fichier}",StringLen($split[1]))
$Chemin_copie = StringReplace($Chemin_copie,"{taille_fichier}",FileGetSize($chemin&$fichiers[$nb[$i]]))
FileCopy($chemin&$fichiers[$nb[$i]],$Chemin_copie&$fichiers[$nb[$i]])
Next
EndIf
Case "Deplacement"
If Guichecked(GuiCtrlRead($g2_Radio1)) Then
If NOT IsDeclared("Chemin_copie") Or $Chemin_copie = "" Then
MsgBox(1,"File Manager","Vous devez choisir votre dossier de copie.")
ContinueLoop
EndIf
For $i = 1 to Ubound($nb)-1
FileCopy($chemin&$fichiers[$nb[$i]],$Chemin_copie&$fichiers[$nb[$i]])
Next
ElseIf Guichecked(GuiCtrlRead($g2_Radio2)) Then
$Chemin_copie = GUICtrlRead($g2_Input1)
If $Chemin_copie == "" Then
MsgBox(1,"File Manager","Vous devez choisir votre dossier de copie.")
ContinueLoop
EndIf
For $i = 1 to Ubound($nb)-1
$split0 = StringSplit($fichiers[$nb[$i]],"\")
$split = StringSplit($split0[Ubound($split0)-1],".")
$Chemin_copie = StringReplace($Chemin_copie,"{date_creation}",FileGetTime($chemin&$fichiers[$nb[$i]],1))
$Chemin_copie = StringReplace($Chemin_copie,"{date_modification}",FileGetTime($chemin&$fichiers[$nb[$i]],0))
$Chemin_copie = StringReplace($Chemin_copie,"{nom_fichier}",$split[1])
$Chemin_copie = StringReplace($Chemin_copie,"{extension_fichier}",$split[2])
$Chemin_copie = StringReplace($Chemin_copie,"{len_nom_fichier}",StringLen($split[1]))
$Chemin_copie = StringReplace($Chemin_copie,"{taille_fichier}",FileGetSize($chemin&$fichiers[$nb[$i]]))
FileMove($chemin&$fichiers[$nb[$i]],$Chemin_copie&$fichiers[$nb[$i]])
Next
EndIf
EndSwitch
actualise()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
► Afficher le textePart2
Code : Tout sélectionner
Func search($n_chemin,$n_filter,$n_recursive)
$nfichiers = _FileListToArrayXT ($n_chemin, $n_filter, 1,1, $n_recursive, "",1)
If $nfichiers = '' Then Dim $nfichiers[1]
Return $nfichiers
EndFunc
Func set_checked($func)
_GUICtrlTreeView_BeginUpdate($hTreeView)
If $func == 0 then
For $i = 1 to Ubound($fichiers)-1
_GUICtrlTreeView_SetChecked($hTreeView, $hItem[$i],False)
Next
ElseIf $func == 1 then
For $i = 1 to Ubound($fichiers)-1
_GUICtrlTreeView_SetChecked($hTreeView, $hItem[$i],True)
Next
Else
For $i = 1 to Ubound($fichiers)-1
If StringRegExp($fichiers[$i],$func)Then; And NOT _GUICtrlTreeView_GetChecked($hTreeView, $hItem[$i]) Then
_GUICtrlTreeView_SetChecked($hTreeView, $hItem[$i])
ElseIf NOT StringRegExp($fichiers[$i],$func)Then; And _GUICtrlTreeView_GetChecked($hTreeView, $hItem[$i]) Then
_GUICtrlTreeView_SetChecked($hTreeView, $hItem[$i],False)
EndIf
Next
EndIf
_GUICtrlTreeView_EndUpdate($hTreeView)
EndFunc
Func put_data()
_GUICtrlTreeView_BeginUpdate($hTreeView)
_GUICtrlTreeView_DeleteAll($hTreeView)
Dim $hItem[Ubound($fichiers)]
For $x = 1 To Ubound($fichiers)-1
$hItem[$x] = GUICtrlCreateTreeViewItem($fichiers[$x], $hTreeView)
_GUICtrlTreeView_SetChecked($hTreeView, $hItem[$x])
Next
_GUICtrlTreeView_EndUpdate($hTreeView)
EndFunc
Func actualise()
$fichiers = search($chemin,$filter,$recursive)
put_data()
EndFunc
Func Guichecked($h)
If BitAND($GUI_CHECKED,$h) = $GUI_CHECKED THen Return TRUE
Return 0
EndFunc