[..] Exécuter tous les fichiers sélectionnés d'un dossier et/ou sous dossier les uns après les autres.
Posté : jeu. 18 avr. 2019 13:05
Bonjour,
Exécuter tous les fichiers sélectionnés d'un dossier et/ou sous dossier les uns après les autres.
1- Une fois sélectionnés avec « $sFileOpenDialog » seront copiers dans « GUICtrlCreateList »
2- Dans « GUICtrlCreateList » les fichiers(Filename) seront rangés à gauche dans la grille (Le Champ) et à droite le « Folderpath » (In Folder). Filename et Folderpath sont séparés par un espace vide.
3- Les fichiers sélectionnés d'un dossier et/ou sous dossier seront exécuter automatiquement les uns après les autres, puis ranger dans un autre « GUICtrlCreateList »
4- A la fin de l’opération, un message soit il nous indique que l’opération est réussi à 100%, sino les fichiers corrompus seront souligner en rouge.
Le code ci-joint c’est juste un exemple de ce que je veux réaliser avec votre aide.
Merci d’avance pour votre aide.
Cordialement.
Exécuter tous les fichiers sélectionnés d'un dossier et/ou sous dossier les uns après les autres.
1- Une fois sélectionnés avec « $sFileOpenDialog » seront copiers dans « GUICtrlCreateList »
2- Dans « GUICtrlCreateList » les fichiers(Filename) seront rangés à gauche dans la grille (Le Champ) et à droite le « Folderpath » (In Folder). Filename et Folderpath sont séparés par un espace vide.
3- Les fichiers sélectionnés d'un dossier et/ou sous dossier seront exécuter automatiquement les uns après les autres, puis ranger dans un autre « GUICtrlCreateList »
4- A la fin de l’opération, un message soit il nous indique que l’opération est réussi à 100%, sino les fichiers corrompus seront souligner en rouge.
Le code ci-joint c’est juste un exemple de ce que je veux réaliser avec votre aide.
Merci d’avance pour votre aide.
Cordialement.
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
Example01()
Func Example01()
If @error Then Exit ;pas de choix on sort
$filter = "*.exe"
GUICreate("My GUI list") ; will create a dialog box that when displayed is centered
Local $idButton_Add_File = GUICtrlCreateButton("Add File(s)", 90, 10, 75, 25)
Local $idButton_Add_Folder = GUICtrlCreateButton("Add Folder", 240, 10, 75, 25)
Local $idButton_Clear = GUICtrlCreateButton("Clear List", 315, 158, 75, 25)
Local $idMylist1 = GUICtrlCreateList("", 10, 40, 380, 120)
Local $idMylist2 = GUICtrlCreateList("", 10, 200, 380, 120)
Local $FrLabel1 = GUICtrlCreateLabel("Liste des fichiers exécutés", 10, 183, 132, 15)
Local $FrLabel2 = GUICtrlCreateLabel("Filename", 15, 44, 50, 15)
Local $FrLabel3 = GUICtrlCreateLabel("In Folder", 240, 44, 50, 15)
GUICtrlSetLimit(-1, 200) ; to limit horizontal scrolling
Local $idButton_Execute = GUICtrlCreateButton("ShellExecute", 64, 360, 75, 25)
Local $idButton_Close = GUICtrlCreateButton("Exit", 240, 360, 75, 25)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idButton_Add_File
Local $sFileOpenDialog = FileOpenDialog("", @DesktopDir, "All(*.*)" , BitOr($FD_FILEMUSTEXIST, $FD_MULTISELECT)) ;renvoie chemin|fichier1|fichier2|etc...
GUICtrlSetData($idMylist1, $sFileOpenDialog)
Case $idButton_Add_Folder
$filepath = FileSelectFolder("choisir",@DesktopDir) ;choix du dossier
If @error Then Exit ;pas de choix on sort
$filter = "*.exe"
$array = _FileListToArray($filepath,$filter, $FLTA_FILESFOLDERS ,True);tableau avec l'adresse des fichiers
;$array = _FileListToArrayRec($filepath,$filter, $FLTA_FILESFOLDERS ,True) ;Si vous avez des sous dossiers, il faudra utiliser _FileListToArrayRec()
If @error Then Exit MsgBox(0,"","pas trouvé " & $filter)
_ArrayDisplay($array) ;pour voir le résultat
For $i = 1 To $array[0] ; boucle sur le tableau pour lire chaque ligne $array[0] contient le nb de lignes
GUICtrlSetData($idMylist1, $array[$i])
Next
Case $idButton_Clear
GUICtrlSetData($idMylist1, "")
Case $idButton_Execute
;ShellExecuteWait($array[$i]); exécute le fichier et attend sa fermeture
Case $idButton_Close
Exit
EndSwitch
WEnd
EndFunc ;==>Example
#include <MsgBoxConstants.au3>
Example01()
Func Example01()
If @error Then Exit ;pas de choix on sort
$filter = "*.exe"
GUICreate("My GUI list") ; will create a dialog box that when displayed is centered
Local $idButton_Add_File = GUICtrlCreateButton("Add File(s)", 90, 10, 75, 25)
Local $idButton_Add_Folder = GUICtrlCreateButton("Add Folder", 240, 10, 75, 25)
Local $idButton_Clear = GUICtrlCreateButton("Clear List", 315, 158, 75, 25)
Local $idMylist1 = GUICtrlCreateList("", 10, 40, 380, 120)
Local $idMylist2 = GUICtrlCreateList("", 10, 200, 380, 120)
Local $FrLabel1 = GUICtrlCreateLabel("Liste des fichiers exécutés", 10, 183, 132, 15)
Local $FrLabel2 = GUICtrlCreateLabel("Filename", 15, 44, 50, 15)
Local $FrLabel3 = GUICtrlCreateLabel("In Folder", 240, 44, 50, 15)
GUICtrlSetLimit(-1, 200) ; to limit horizontal scrolling
Local $idButton_Execute = GUICtrlCreateButton("ShellExecute", 64, 360, 75, 25)
Local $idButton_Close = GUICtrlCreateButton("Exit", 240, 360, 75, 25)
GUISetState(@SW_SHOW)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
Case $idButton_Add_File
Local $sFileOpenDialog = FileOpenDialog("", @DesktopDir, "All(*.*)" , BitOr($FD_FILEMUSTEXIST, $FD_MULTISELECT)) ;renvoie chemin|fichier1|fichier2|etc...
GUICtrlSetData($idMylist1, $sFileOpenDialog)
Case $idButton_Add_Folder
$filepath = FileSelectFolder("choisir",@DesktopDir) ;choix du dossier
If @error Then Exit ;pas de choix on sort
$filter = "*.exe"
$array = _FileListToArray($filepath,$filter, $FLTA_FILESFOLDERS ,True);tableau avec l'adresse des fichiers
;$array = _FileListToArrayRec($filepath,$filter, $FLTA_FILESFOLDERS ,True) ;Si vous avez des sous dossiers, il faudra utiliser _FileListToArrayRec()
If @error Then Exit MsgBox(0,"","pas trouvé " & $filter)
_ArrayDisplay($array) ;pour voir le résultat
For $i = 1 To $array[0] ; boucle sur le tableau pour lire chaque ligne $array[0] contient le nb de lignes
GUICtrlSetData($idMylist1, $array[$i])
Next
Case $idButton_Clear
GUICtrlSetData($idMylist1, "")
Case $idButton_Execute
;ShellExecuteWait($array[$i]); exécute le fichier et attend sa fermeture
Case $idButton_Close
Exit
EndSwitch
WEnd
EndFunc ;==>Example