[..] Contrôler si un dossier contient des fichiers
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[..] Contrôler si un dossier contient des fichiers
Salut,
Pourriez me dire si il y a un code pour aller chercher dans un dossier s'il y a au moins un fichier avec en réponse = oui / non
Merci
Pourriez me dire si il y a un code pour aller chercher dans un dossier s'il y a au moins un fichier avec en réponse = oui / non
Merci
- ZDS
- Membre émérite

- Messages : 554
- Enregistré le : jeu. 10 juin 2010 10:35
- Localisation : 22300 Cul-d'chouette Langue-de-vache
- Status : Hors ligne
Re: [..] controler si un dossier contient des fichiers
Bonjour,
Inutile de prendre un rouleau compresseur pour écraser une mouche, lister les fichiers pour savoir si il existe des fichiers relève de la consommation volontaire de ressources pour pas grand chose ^^
Voici une fonction toute simple qui devrait faire ce que tu demandes :Succès : Retourne True si le répertoire est vide, False sinon
Echec : Met @error à 1 si le répertoire n'existe pas
Remarques : Le nom du dossier ne doit pas contenir de backslash final - exemple : "C:\Test" et non pas "C:\Test\"
A bientôt !
PS : Dans ton cas, tu veux savoir si le dossier contient au moins un fichier. Soit tu fais un Not emptyFolder($folder) dans le reste du script, soit tu changes le nom de la fonction et le Return [...] en Return Not [...]. La seconde solution est plus logique car dans le cas de la première avec d'une erreur, tu aurais le flag @error à 1 et pourtant un résultat à True (qui induirait que le dossier n'existe pas et qu'il contient des fichiers, une erreur d'algo à la Microsoft Office quoi, genre "Erreur : Aucune erreur détectée" ^^).
EDIT: Modification effectue pour fermer le handle avant de retourner le résultat.
Inutile de prendre un rouleau compresseur pour écraser une mouche, lister les fichiers pour savoir si il existe des fichiers relève de la consommation volontaire de ressources pour pas grand chose ^^
Voici une fonction toute simple qui devrait faire ce que tu demandes :
Code : Tout sélectionner
Func emptyFolder($folder)
Local $result, $empty
If FileExists($folder&"\") = 0 Then
SetError(1) ; Folder not found
Else
$result = FileFindFirstFile($folder&"\"&"*")
$empty = ($result = -1 Or @error)
If $result <> -1 Then FileClose($result)
Return $empty
EndIf
EndFuncEchec : Met @error à 1 si le répertoire n'existe pas
Remarques : Le nom du dossier ne doit pas contenir de backslash final - exemple : "C:\Test" et non pas "C:\Test\"
A bientôt !
PS : Dans ton cas, tu veux savoir si le dossier contient au moins un fichier. Soit tu fais un Not emptyFolder($folder) dans le reste du script, soit tu changes le nom de la fonction et le Return [...] en Return Not [...]. La seconde solution est plus logique car dans le cas de la première avec d'une erreur, tu aurais le flag @error à 1 et pourtant un résultat à True (qui induirait que le dossier n'existe pas et qu'il contient des fichiers, une erreur d'algo à la Microsoft Office quoi, genre "Erreur : Aucune erreur détectée" ^^).
EDIT: Modification effectue pour fermer le handle avant de retourner le résultat.
Modifié en dernier par ZDS le jeu. 07 juil. 2011 11:49, modifié 2 fois.
ZDS : Chef de projet du nAiO (logiciel AutoIt gratuit sous licence CC 4.0 BY-NC-SA)
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
Tout problème a une solution, donc si il y a pas d'solution, c'est qu'il y a pas d'problème !
-
SurPriseS
- Niveau 6

- Messages : 293
- Enregistré le : jeu. 06 sept. 2007 11:35
- Localisation : Finistère sud
- Status : Hors ligne
Re: [..] controler si un dossier contient des fichiers
Désolé
j'ai pas toujours le reflex optimisation 
Re: [..] controler si un dossier contient des fichiers
Peut-on si le dossier contient effectivement des dossiers ajouter la fonction
puis en fonction de la réponse (oui/non) lancer la commande ci-dessous (Je ne sais pas comment fonctionne le "array", j'imagine qu'il peut permettre d'ouvrir un fichier de la liste qu'il propose... je cherche
Code : Tout sélectionner
MsgBox(4,"document à traiter","Voulez vous les traiter maintent ?")Code : Tout sélectionner
#include<Array.au3>
#include"RecFileListToArray.au3"
$ar_Array = _RecFileListToArray ("C:\", "*.odt;*.doc", 0, 0, 2, 1, "Temp")
_Array ???????($ar_Array, "Liste fichier")- matwachich
- Membre émérite

- Messages : 986
- Enregistré le : lun. 19 oct. 2009 04:04
- Localisation : Algérie
- Status : Hors ligne
Re: [..] controler si un dossier contient des fichiers
@NDS: n'oublie pas le FileClose sur le handle
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Re: [..] controler si un dossier contient des fichiers
matwachich a écrit :@NDS: n'oublie pas le FileClose sur le handle
c'est à dire ???
-
GaRydelaMer
- Niveau 7

- Messages : 450
- Enregistré le : mer. 18 mars 2009 22:12
- Localisation : Montpellier
- Status : Hors ligne
Re: [..] controler si un dossier contient des fichiers
Bonjour
je vous propose cette fonction pour connaitre si un dossier est vide ou pas, je part du principe que 1 dossier qui existe pas est vide:
Elle retourne Vrai si le dossier ne contient ni Fichier et/ou SousDossier ou si le dossier n'existe pas en mettant tout de même @error à 1, sinon elle retourne False.
je vous propose cette fonction pour connaitre si un dossier est vide ou pas, je part du principe que 1 dossier qui existe pas est vide:
Code : Tout sélectionner
Func Is_EmptyFolder($Path)
Local $FSO = ObjCreate("Scripting.FileSystemObject")
If Not $FSO.FolderExists($Path) Then Return SetError(1, 1, True)
Local $Folder = $FSO.GetFolder($Path)
If $Folder.SubFolders.Count = 0 And $Folder.Files.Count = 0 Then Return True
Return False
EndFunc- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] controler si un dossier contient des fichiers
Techniquement parlant, si un dossier et/ou ses sous dossiers son vides, il n'y a aucune information intéressante à récupérer et donc un simple :suffit largement.
Ceci dit, si il faut connaitre les éventuels dossiers et/ou fichiers vide qui pourraient s'y trouver, ceci suffit :
Code : Tout sélectionner
DirGetSize("C:\Dossier")Ceci dit, si il faut connaitre les éventuels dossiers et/ou fichiers vide qui pourraient s'y trouver, ceci suffit :
Code : Tout sélectionner
$array = DirGetSize("C:\Dossier", 1)$array[0] = Size
$array[1] = Files count
$array[2] = Dirs Count
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".

