Page 1 sur 1
[..] Filtrer array_display
Posté : lun. 26 oct. 2015 12:52
par jcaspar
Bonjour à tous !
serait il possible de filtrer la sortie de sorte que seul les fichiers ayant une longueur de plus de 256 caractères soit affiché
en filtrant la sortie de array_display ou en reduisant la taille du listing fourni par _FileToArrayRec ?
En vous remerciant pour vos conseils
Jean-Marc
► Afficher le texte
Code : Tout sélectionner
#include <File.au3>
Local $aArray = _FileListToArrayRec("p:\ACSF", "*", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT, $FLTAR_FULLPATH)
_ArrayColInsert($aArray, 1)
For $i = 1 To $aArray[0][0]
$aArray[$i][1] = StringLen($aArray[$i][0])
Next
_ArraySort($aArray, 0, 0, 0, 1)
_ArrayDisplay($aArray, "Fichiers triés","",64+32,"","FICHIERS|TAILLE|","",0xDDFFDD)
$chaine=_ArrayToString($aArray)
_FileCreate("test.txt")
FileWrite("test.txt",$chaine)
Re: [..] Filtrer array_display
Posté : lun. 26 oct. 2015 14:31
par mdanielm
Une solution bête, à mon niveau:
► Afficher le texte
Code : Tout sélectionner
#include <File.au3>
#include <FileConstants.au3>
#include <array.au3>
Global $aFile = _FileListToArrayRec( _
"c:\program files (x86)\autoit3\", _ ;le dossier où lister les fichiers
"*.*", _ ;filtre
$FLTAR_FILES, _ ;les fichiers mais pas les sous-rep
$FLTAR_RECUR, _ ;les fichiers des sous-rep
$FLTAR_NOSORT, _ ;pas de tri
$FLTAR_FULLPATH) ;noms complets
; On enlève du tableau les fichiers de taille <= 256
ConsoleWrite("Nbre d'éléments avant: " & $aFile[0] & @crlf)
Global $j=1 ;index de la position d'écriture
for $i=1 to $aFile[0] ; $i = index de la position de lecture
if FileGetSize($aFile[$i]) > 256 Then
$aFile[$j] = $aFile[$i]
$j+=1
Else
ConsoleWrite($aFile[$i] & " ---> est un fichier de moins de 256 octets" & @crlf)
EndIf
Next
$aFile[0]=$j-1 ; nb d'éléments
redim $aFile[$j]
ConsoleWrite("Nbre d'éléments après: " & $aFile[0] & @crlf)
_ArrayDisplay($aFile)
Re: [..] Filtrer array_display
Posté : lun. 26 oct. 2015 17:00
par mikell
Une autre manière, basée sur le script du post 1
► Afficher le texte
Code : Tout sélectionner
#include <File.au3>
$includes = StringRegExpReplace(@Autoitexe, '(.+)\\[^\\]+', "$1") & "\Include\"
Local $aArray = _FileListToArrayRec($includes, "*", $FLTAR_FILESFOLDERS, $FLTAR_RECUR, $FLTAR_SORT, $FLTAR_FULLPATH)
_ArrayColInsert($aArray, 1)
For $i = 1 To $aArray[0][0]
$aArray[$i][1] = StringLen($aArray[$i][0])
Next
_ArraySort($aArray, 0, 0, 0, 1)
_ArrayDisplay($aArray, "Fichiers triés","",64+32,"","FICHIERS|TAILLE|","",0xDDFFDD)
$chaine =_ArrayToString($aArray)
[color=#00BF00]; supprime les lignes ayant une longueur de moins de 54 caractères[/color]
$chaine = StringRegExpReplace($chaine, '(?m)^[^\|]{0,53}\|\d+\R?', "")
$n = @extended
$chaine = StringRegExpReplace($chaine, '^\d+', $aArray[0][0] - $n)
FileWrite("test.txt", $chaine)