Page 1 sur 1
[..] Filtrage par dossier
Posté : mer. 18 mars 2015 17:28
par ricky
Bonjour,
J'utilise la fonction (v3) décrite dans ce post :
http://www.autoitscript.fr/forum/viewto ... 532#p45532
Mais lorsque je fais le listage d'un contenu de dossier, celui-ci n'est pas tri selon le dossier mais par ordre alphabétique.
Comment faire pour qu'il trie par dossier?
Code : Tout sélectionner
#include<Array.au3>
#include"_FileListToArrayEx_v3.au3"
$ar_Array = _FileListToArrayEx("C:\Program Files (x86)", "*", 0, 1)
_ArrayDisplay($ar_Array, "Liste fichier")
Merci d'avance pour votre aide
Re: [..]Filtrage par dossier
Posté : mer. 18 mars 2015 18:40
par orax
Je pense que le tri sera forcément par ordre alphabétique. Je ne suis pas sûr de comprendre ce que veux dire selon le dossier.
_FileListToArrayRec trie d'une manière différente, peut-être que ça correspond à tes attentes.
Re: [..] Filtrage par dossier
Posté : mer. 18 mars 2015 22:41
par ricky
Essayez le script que j'ai mis ça sera plus clair.
Il fait dans l'ordre alphabétique, que ça soit un dossier ou un fichier.
Moi, j'aimerais qu'il fasse le premier dossier, puis le deuxième, ensuite le 3ème et ainsi de suite...
Re: [..] Filtrage par dossier
Posté : mer. 18 mars 2015 23:12
par jguinch
ricky a écrit :
Mais lorsque je fais le listage d'un contenu de dossier, celui-ci n'est pas tri selon le dossier mais par ordre alphabétique.
[...]
Il fait dans l'ordre alphabétique, que ça soit un dossier ou un fichier.
[...]
Moi, j'aimerais qu'il fasse le premier dossier, puis le deuxième, ensuite le 3ème et ainsi de suite...
Ricky, peut-être que tu pourrais nous donner un exemple du résultat attendu ?
Est-ce que tu peux essayer avec ça ?
► Afficher le texte
Code : Tout sélectionner
#Include <Array.au3>
$ret = _FileList("c:\program files (x86)", "*.*", 1)
_ArrayDisplay($ret)
Func _FileList($sDir, $vFile, $iRec = 0)
Local $hDir, $hSearch
Local $aDirs[1] = [ StringRegExpReplace($sDir, "\\$", "") ]
Local $aRet[1], $iRetIndex = 0
Local $aSearch[1]
If IsArray($vFile) Then
$aSearch = $vFile
Else
$aSearch[0] = $vFile
EndIf
If NOT FileExists($sDir) Then Return SetError(1, 0, 0)
Local $i = 0
Local $iIndex = 0
While $i <= $iIndex
$hDir = FileFindFirstFile($aDirs[$i] & "\*.*")
If $hDir = -1 Then
$i += 1
ContinueLoop
EndIf
For $j = 0 To UBound($aSearch) - 1
$hSearch = FileFindFirstFile($aDirs[$i] & "\" & $aSearch[$j])
If $hSearch = -1 Then ExitLoop
While 1
$sFound = FileFindNextFile($hSearch)
If @error Then ExitLoop
; If $sFound = "desktop.ini" OR $sFound = "Thumbs.db" Then ContinueLoop
$iRetIndex += 1
If UBound($aRet) <= $iRetIndex Then Redim $aRet[ $iRetIndex * 2]
$aRet[$iRetIndex] = $aDirs[$i] & "\" & $sFound
WEnd
FileClose($hSearch)
Next
While 1
$sFileName = FileFindNextFile($hDir)
If @error Then ExitLoop
If @extended Then
$iIndex += 1
If UBound($aDirs) <= $iIndex Then Redim $aDirs[ $iIndex * 2 ]
$aDirs[$iIndex] = $aDirs[$i] & "\" & $sFileName
EndIf
WEnd
FileClose($hDir)
$i += 1
WEnd
$aDirs = 0
Redim $aRet[$iRetIndex + 1]
$aRet[0] = UBound($aRet) - 1
Return $aRet
EndFunc