Page 1 sur 1

shell execute tout les fichiers d'un dossier avec la bonne extension les uns apres les autres

Posté : ven. 13 avr. 2018 17:06
par damad
Bonjour,
je suis entrain de develloper mon premier script et j'avoue que je galere a trouver les infos:
je souhaite lancer un fichier d'un dossier quel que soit son nom, (pas de nom defini) qu'il execute mon scripte et qu'il passe au suivant quand c'est fini.

j'ai compris qu'il fallait faire une boucle cependant je ne comprend pas comment lancer un shell execute sur tout les fichier d'un dossier repondant a une extension.
merci d'avance
bonne journée

Re: shell execute tout les fichiers d'un dossier avec la bonne extension les uns apres les autres

Posté : ven. 13 avr. 2018 18:09
par walkson
Bonjour,
Comme ça ?
#include <Array.au3>
#include <File.au3>
$filepath = FileSelectFolder("choisir",@DesktopDir) ;choix du dossier
If @error Then Exit ;pas de choix on sort
$filter = "*.png"
$array = _FileListToArray($filepath,$filter, $FLTA_FILESFOLDERS ,True);tableau avec l'adresse des fichiers
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
ShellExecuteWait($array[$i]); exécute le fichier et attend sa fermeture
Next
 

Re: shell execute tout les fichiers d'un dossier avec la bonne extension les uns apres les autres

Posté : ven. 13 avr. 2018 19:19
par damad
c'est bien ce que je pensais il fallait creer une liste des fichier pour allez piocher dedans.. merci 100000 fois

Re: shell execute tout les fichiers d'un dossier avec la bonne extension les uns apres les autres

Posté : ven. 13 avr. 2018 20:06
par walkson
J'ai oublié de mettre If @error Then Exit MsgBox(0,"","pas trouvé " & $filter) sous la fonction _FileListToArray() car si l'extension n'est pas trouvé il y aura un bug fatal au niveau de $array[]

Si vous avez des sous dossiers, il faudra utiliser _FileListToArrayRec()
Et si vous voulez ouvrir l'extension par un programme précis, vous pouvez le faire par exemple comme ceci ShellExecuteWait( @ProgramFilesDir & "\paint.net\PaintDotNet.exe", $array[$i] )