Page 1 sur 1
[R] Lister tous les fichiers ayant la même extension
Posté : mar. 30 août 2011 21:07
par sablier94
Bonjour,
J'aimerai lister (dans un tableau ou un fichier texte) tous les fichiers ayant l’extension .tmp en cherchant dans TOUS les dossiers de la partition C:\
J'ai fait des recherches mais je n'ai pas trouvé ce genre de fonction.
Il faudrait sûrement utiliser les fonctions suivantes mais je vois pas comment faire l'algorithme pour chercher dans tout le disque.
Merci pour votre aide !

Re: [..] Lister tous les fichiers ayant la même extension
Posté : mar. 30 août 2011 21:45
par PandiPanda
ceci ne vous conviendrai pas ?
Code : Tout sélectionner
Run(@ComSpec & " /c " & 'DIR /S *.tmp >'&@ScriptDir&'\tmp.txt', "", @SW_HIDE)
Re: [..] Lister tous les fichiers ayant la même extension
Posté : mar. 30 août 2011 22:01
par sablier94
Salut,
Il faudra que je teste sur mon ordinateur mais ça devrait être bon.
Et dire que je cherchais quelque chose de plus long en batch/autoit...
Merci

Re: [..] Lister tous les fichiers ayant la même extension
Posté : mar. 30 août 2011 22:47
par Tlem
Plus long et sous AutoIt !
Pas de problème, nous avons cela en stock :
http://www.autoitscript.fr/forum/viewto ... f=21&t=479
Re: [..] Lister tous les fichiers ayant la même extension
Posté : mer. 31 août 2011 02:30
par legend
cependant rechercher dans tout un disque dur risque d'être très long sous autoit.
je conseille d'utiliser un simple tool de recherche (peut être celui de windows) en fenêtre invisible accompagné d'un script autoit.
Re: [..] Lister tous les fichiers ayant la même extension
Posté : mer. 31 août 2011 18:22
par sablier94
Hello,
J'ai testé les deux méthodes, mais malheureusement aucune d'elles ne marche, le code s'exécute, mais rien ne se passe.
Voici le code utilisé avec l'UDF de Tlem :
Code : Tout sélectionner
#include <Array.au3>
#include <RecFileListToArray.au3>
$ar_Array = _RecFileListToArray ("c:\", "*.tmp", 0, 0, 2, 1, "")
_ArrayDisplay($ar_Array, "Liste des fichiers").
Et pareil pour le code de PandiPanda.
Re: [..] Lister tous les fichiers ayant la même extension
Posté : mer. 31 août 2011 19:06
par PandiPanda
question idiotes, mais cependant nécessaires ...
vous êtes certain de posséder des fichiers ayant l'extension ".tmp"? ^^
Re: [..] Lister tous les fichiers ayant la même extension
Posté : mer. 31 août 2011 19:11
par sablier94
Oui j'en ai. (Et même, cela créerait un fichier vide non ?)
Le code marche chez toi ?
Re: [..] Lister tous les fichiers ayant la même extension
Posté : mer. 31 août 2011 19:17
par PandiPanda
Oui celui que j'ai poster fct parfaitement et me créer bien un fichier +- vide ^^
j'ai ceci sur le bureau (script lancer depuis le bureau);
► Afficher le textetmp.txt
Le volume dans le lecteur C s'appelle OS
Le num‚ro de s‚rie du volume est XXXX-XXXX
Re: [..] Lister tous les fichiers ayant la même extension
Posté : mer. 31 août 2011 19:48
par Tlem
L'utilisation de la fonction
_RecFileListToArray est incorrecte.
Utilisez ce code :
Code : Tout sélectionner
#include <Array.au3>
#include <RecFileListToArray.au3>
$ar_Array = _RecFileListToArray ("c:\", "*.tmp", 1, 1)
_ArrayDisplay($ar_Array, "Liste des fichiers *.tmp du disque C:").
Paramètre 1 = Chemin de recherche.
Paramètre 2 = Masque du ou des fichiers (si plusieurs fichiers, séparer le masque par un point virgule).
Paramètre 3 = Type de retour 0 = Fichier + Dossier;
1 fichiers seuls; 2 dossiers seuls.
Paramètre 4 = Recherche récursive (0 = non;
1 = oui).
Paramètre 5 = Non utilisé
Paramètre 6 = Non utilisé
Paramètre 7 = Non utilisé
Paramètre 8 = Non utilisé
Re: [..] Lister tous les fichiers ayant la même extension
Posté : jeu. 01 sept. 2011 21:30
par sablier94
Merci pour le coup de pouce
Bon c'est très très très lent mais j'ai pas trop le choix...
Merci
EDIT : J'ai réussi à faire un batch qui correspond à ce que je cherchais. Je n'aurais plus qu'à l’exécuter en Autoit.
Code :
Code : Tout sélectionner
@echo off
:: \\ Code orignal by STRYK
echo Analyse en cours, patientez svp ...
for %%A in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do (
if exist %%A: for /f "tokens=*" %%B in ('dir /b /s %%A:\*.tmp') do (
echo %%B >> ListTemp.txt
set /a SIZE+=%%~zB
set /a FILES+=1
)
)
cls
echo.
echo Taille totale des fichiers .tmp sur tous les lecteurs en octets : %SIZE% >> ListTemp.txt
echo.
echo %FILES% >> ListTemp.txt
Re: [..] Lister tous les fichiers ayant la même extension
Posté : ven. 02 sept. 2011 00:43
par Tlem
sablier94 a écrit :Je n'aurais plus qu'à l’exécuter en Autoit.

Voici une base :
► Afficher le texte
Code : Tout sélectionner
#include <Array.au3>
#include <File.au3>
$ar_Array = _FileSearchToArray("C:", "*.tmp", 1, 0)
MsgBox(0, "Info", "Listing terminé. Affichage du tableau :")
_ArrayDisplay($ar_Array, "Liste des fichiers *.tmp du disque C:")
#cs
High Speed
$sPath filepath
$sSub include sub-folders? 0=N 1=Y annother = N
$sFilter Optional the filter to use, default is *.*
$flag 0=output all files & folders,1=folders only ,2=files only ,default = 0 annother = 0
$sOUT tempfile
#ce
Func _FileSearchToArray($sPath, $sFilter = "*", $sSub = 0,$sFalg = 0, $sOUT = "")
If $sOUT = "" Then $sOUT = @ScriptDir & "\filelist.txt"
If StringRight($sPath,1)<>"\" Then $sPath=$sPath&"\"
If $sSub = 1 Then
$sSub = " /s"
Else
$sSub = ""
EndIf
If $sFilter = "" Then $sFilter = "*"
If $sFalg = 1 Then
$sFalg = "/a:d"
ElseIf $sFalg = 2 Then
$sFalg = "/a:-d"
Else
$sFalg = "/a"
EndIf
RunWait(@ComSpec & ' /c ' & 'dir "' & $sPath & $sFilter & '" ' & $sFalg & ' /b' & $sSub & ' > "' & $sOUT & '"', '', @SW_HIDE)
Dim $sfilelist
_FileReadToArray($sOUT, $sfilelist)
If Not IsArray($sfilelist) Then
Dim $sfilelist[1]
$sfilelist[0] = 0
Else
If $sfilelist[$sfilelist[0]] = "" Then
_ArrayDelete($sfilelist, $sfilelist[0])
$sfilelist[0] = $sfilelist[0] - 1
EndIf
EndIf
FileDelete($sOUT)
Return $sfilelist
EndFunc ;==>_FilesearchToArray