[..] Chercher récursivement des fichiers et filesize > txt

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

[..] Chercher récursivement des fichiers et filesize > txt

#1

Message par gh0stid »

Avant tous,
Bonjour!

en deuxième ... j'ai un problème...

concrètement ce que je cherche a faire est simple, mais pour une raison ( probablement absurdes ) je bloque!
j'utilise en gros UDF de AZJIO
; AZJIO
; http://www.autoitscript.com/forum/topic ... dersearch/

ce dernier me permet de rechercher récurvisement \ facilement en fonction de critère précis.. dans le cas présent une extension de fichier *.nsf
je réussi a sortir l'info que je veux ainsi que la loger avec un FileOpen FileWrite et FileClose...

cependant je voudrais une fois fait, ré-ouvrir le fichier log en question, et for $i in $logfile sortir le size des fichiers... c'est la que je bloque

Code : Tout sélectionner

; AZJIO
; http://www.autoitscript.com/forum/topic/133224-filesearch-foldersearch/
#include <Array.au3> ; for _ArrayDisplay
#include <FileOperations.au3>


; Files
; i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
; creation des variable,
$SearchPath  = 'C:'
$LogDirOpen = 'C:\bulk\log_c.log'
$Log = 'FileOpen($LogDirOpen, $FO_OVERWRITE)'
; i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i
$timer = TimerInit()
$FileList = _FO_FileSearch($SearchPath, 'nsf', True, 125, 1, 0, 0)
$timer = Round(TimerDiff($timer) / 1000, 2) & ' sec'

FileWriteLine($LogDirOpen, $FileList)
FileClose($LogDirOpen)

JE SUPPOSE que ici je dois faire un genre de ... 
$size = $FileRead($LogDirOpen)
for $i in $size 
filegetsize(**************)

bref.. c'est tout ici que je bloque, oui je suis plus que néophyte... 
 
Un gros merci..
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#2

Message par jguinch »

Le but c'est quoi ? avoir la taille totale, ou la taille par fichier ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#3

Message par gh0stid »

désoler !

le but est d'avoir un resultat final qui ressemble a :

\\fs2\home\Allg09922\notes\a_ALLG209.nsf TAILLE+EN+MB
\\fs2\home\Audh53846\notes\archive\a_audh58_2012.nsf TAILLE+EN+MB
\\fs2\home\Audm40450\notes électroniques\Archivage\2006_a_aud23m4050.nsf TAILLE+EN+MB
\\fs2\home\Aug5e0001\notes\archive\a_AUG23E00.nsf TAILLE+EN+MB
\\fs2\home\B2aa11380\Notes\auyBaribeau.nsf TAILLE+EN+MB

En gros.

présentement jai le résultat sans le TAILLE EN MB
j'ai ajusté en utilsant :

Code : Tout sélectionner

$LSize = FileReadToArray($LogDirOpen)
for $i In $LSize
    FileGetSize($i)
    Next
 
le filereadtoarray fonctionne, pour le reste... je suis encore bloqué
j'espère avoir ete suffisement claire. désoler pour le manque initial de détail
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#4

Message par jguinch »

Essai ça :
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#5

Message par gh0stid »

Malheureusement, ce ne sont pas des FOLDER mais biens des fichiers.

concrètement ce que je veux c'est :

1- Prendre le résultat de ma recherche ( deja fonctionnel )
2- Le mettre en log ( fonctionnel aussi )
3- prendre ce log le mettre en array ( si c'est vraiment nécessaire, si oui, j'ai déjà régler ce point aussi )
4- utiliser le array construit en point 3, pour en resortir tous les size des FICHIERS trouvé en point 1 et loger en point 2 --- je bloque ici et pour la suite
5- Pour citer southpark, ???
6- Profit

j'ai fais ca jusqua présent :

Code : Tout sélectionner

; AZJIO
; http://www.autoitscript.com/forum/topic/133224-filesearch-foldersearch/
#include <Array.au3> ; for _ArrayDisplay
#include <FileOperations.au3>


; Files
; i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!
; creation des variable,
$SearchPath  = 'C:'
$LogDirOpen = 'C:\bulk\log_c.log'
$Log = 'FileOpen($LogDirOpen, $FO_OVERWRITE)'
; i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i!i
$timer = TimerInit()
$FileList = _FO_FileSearch($SearchPath, 'nsf', True, 125, 1, 0, 0)
$timer = Round(TimerDiff($timer) / 1000, 2) & ' sec'

FileWriteLine($LogDirOpen, $FileList)
FileClose($LogDirOpen)

;construction du array -- fonctionnel
$LSize = FileReadToArray($LogDirOpen)
; tentative de filegetsize sur TOUS les membres du array
for $i In $LSize
    FileGetSize($LSize)
Next


;DEBUG
;MsgBox(0, $timer & ' - nsf', $i)
; me montr clairement que mon array est construit.. simplement pour debuger
_ArrayDisplay($Lsize, UBound($LSize) & ' - ' & $timer & ' - RegExp (End)')
 
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#6

Message par jguinch »

Tu as essayé mon code ? Son but est justement de te donner la taille de tous les fichiers dans un tableau (ce que tu veux faire, quoi)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#7

Message par gh0stid »

Bonjour a nouveau.

oui jai essayer ( ca ma pris un certain comprendre le fonctionnement désoler d'avoir dit que ce ne ferait pas. )

il me retourne en effet un array avec la taille ( en bytes je crois ? ) j'ai lu que lon devais diviser par 108.... quelque chose pour l'avoir en meg. je fouillerai dans la fonction si je peux pas ajouter ca quelque part.

par contre, la c'est mon output vers le log qui ne fonctionne plus ?
il creer mon fichier ( forcement grace a mon fileopen ) mais il n'y a plus de log dedans ?


désoler du nombre de question ...
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#8

Message par jguinch »

Tu as vraiment besoin de passer par un fichier de log ?
Pour la taille, elle est en octets. Pour avoir des Ko, il faut diviser par 1024, pour des Mo encore par 1024 et des Go encore par 1024 (et ainsi de suite).
Quel est le but final ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#9

Message par gh0stid »

jguinch a écrit :Tu as vraiment besoin de passer par un fichier de log ?
Pour la taille, elle est en octets. Pour avoir des Ko, il faut diviser par 1024, pour des Mo encore par 1024 et des Go encore par 1024 (et ainsi de suite).
Quel est le but final ?
malheureusement oui

en gros...

je dois scanner sur plusieur chemin soit le C: le G: et le H: pour trouvé tout les fichier .nsf ( archives notes ) que je dois conserver ( il n'y a pas d'endroit generique pour leur sauvegarde actuellement )

une fois identifié avec leur taille ( pour usage statistique ) je dois les copier vers un nouveau chemin ( c'est la dernière etapes du script .. en les renomant au @userid.nsf de l'utilisateur qui a utiliser le script. si il en a plus que un je vais devoir mettre _1.nsf _2.nsf etc.. ( tu te doutes bien que j'aurais eu besoin d'aide pour tout ces points aussi .. mais je ne voulais pas trop en demander non plus ! )

donc en gros .. :

Trouver
Sizer
copier renommé

et ce sur plusieur Drive.
ce sera roulé par les utilisateur directement, donc des droits limités, il pourrons uniquement copier leur fichier propriétaire, vers un repertoire qui lui sera... open bar

ca ce veut un outil pour aider a une migration de 1740 clients.. et ce avant que je vire fou a contacter tout le monde pour savoir ou sont leur FOUTUS archives...
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#10

Message par gh0stid »

j'ai regler le output vers le log avec _FileWriteFromArray

me reste la suite a tout cerner ;)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#11

Message par jguinch »

J'avais un peu de temps, regarde le code ci-dessous et dis-moi si ça peut faire l'affaire.
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#12

Message par gh0stid »

désoler pour le delais de réponse j'étais en congé pour les dernier jours ! longue FDS.

j'ai tester le code. je ne suis pas familier avec tout ce que vous avez utiliser pour la création du log, mais j'aurais deux problème qui ce présente...

premier, il me faut un seul log pour tous le monde. donc faudrait que j'enlève le @username & "-NSF.log"

deuxio. si l’arborescence n'existe pas déjà . la copie ne ce fait pas.

j'ai changer le flag pour 9 au lieu de 1 ça la régler le problème.

Question, comment je ferais pour inclure les lecteur G et lecteur H , en gros, scan le C: trouve quelque chose ou trouve rien, scan le G, trouve quelque chose ou trouve rien et finalement le H: ? outre faire 3 version différentes évidement ?


Encore un énorme , merci !
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#13

Message par gh0stid »

► Afficher le texte
je sais que c'est vraiment pas beau ... mais bon,comme ça je réussi a faire le C: le G: et le H: ( j'ai choisi des répertoires que je savais que des .nsf était présent.. histoire de sauver du temps dans les test )

seul hic... il overwrite le fichier au lieu de le copier avec son nom +suffix en cas de doublons...
décidément, je manque de talent lol ... j'image que c'est tout con et que ça ce règle en 2 3 lignes de code... ( question de structure bref.. )
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#14

Message par gh0stid »

j'ai une question !

encore...

jai finalement reussi a men sortir
création d'un log pour tous.
repertoire individuel par usager etc.

seulement pourquoiiiii je ne suis pas capable d'avoir le NOM DU FICHIER comme fichier créer avec l'increment et un ajout personnel
exemple :

Code : Tout sélectionner

Func _ProcessNSFCopy($aNSFFiles)
    Local Static $x = 0
    Local $suffixe
    Local $prefixe = $aNSFFiles 
    For $i = 1 To $aNSFFiles[0][0]
        If $x Then $suffixe = "_" & $x
        $sFileName = $prefixe & "-C" & $suffixe & ".nsf"

        FileWriteLine($hLogFile, "[" & _Now() & "] Copie de " & $aNSFFiles[$i][0] & " (" & _ReadableSize($aNSFFiles[$i][1]) & ") => " & $storage & $sFileName & @CRLF)
        If FileCopy($aNSFFiles[$i][0], $storage & $sFileName, 9) Then
            $sText = "Copie effectuee avec success"
        Else
            $sText = "ERREUR lors de la copie du fichier"
        EndIf
        FileWriteLine($hLogFile, "[" & _Now() & "] " & $sText)
        $x += 1
    Next

EndFunc
 
serieusement, ca va me rendre fou.. la seule maniere que ca fonctionne c'est avec @username & "-C" &suffixe & ".nsf"
je comprends pas ???
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#15

Message par jguinch »

Je vois pas comment ça peut marcher, car dans ton code $prefixe est un tableau : tu ne peux pas concaténer $prefixe + une chaîne de caractère.
Essaye avec ceci :

Code : Tout sélectionner

$sFileName = StringRegExpReplace($aNSFFiles[$i][0], "(?i)^.+\\(.+)\.nsf", "$1-C" & $suffixe & ".nsf")
 
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#16

Message par gh0stid »

jguinch a écrit :Je vois pas comment ça peut marcher, car dans ton code $prefixe est un tableau : tu ne peux pas concaténer $prefixe + une chaîne de caractère.
Essaye avec ceci :

Code : Tout sélectionner

$sFileName = StringRegExpReplace($aNSFFiles[$i][0], "(?i)^.+\\(.+)\.nsf", "$1-C" & $suffixe & ".nsf")
 
ca ne fonctionne malheureusement pas.. ca me met des "chiffres" random comme si tous les fichier etait traité comme doublons..

je remet mon code, a titre informatif, j'ai peut-être glissé une connerie sans trop y porter attention, ca fais deja 5hr je planche sur le sujet...
► Afficher le texte
resultat :

Code : Tout sélectionner

[2015-10-21 14:29:45] Copie effectuee avec success
[2015-10-21 14:29:45] Copie de c:\Notes\data\Help\lccon6.nsf (2.75 Mo) => C:\bulk\backup_test\poa11546\lccon6-C_10.nsf
[2015-10-21 14:29:45] Copie effectuee avec success
[2015-10-21 14:29:45] Copie de c:\Notes\data\Help\lsxlc6.nsf (1.63 Mo) => C:\bulk\backup_test\poa11546\lsxlc6-C_11.nsf
[2015-10-21 14:29:45] Copie effectuee avec success
[2015-10-21 14:29:45] Copie de c:\Notes\data\Help\readme.nsf (6 Mo) => C:\bulk\backup_test\poa11546\readme-C_12.nsf
[2015-10-21 14:29:45] Copie effectuee avec success
 
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#17

Message par gh0stid »

► Afficher le texte
rien a comprendre...

Code : Tout sélectionner

Func _ProcessNSFCopy($aNSFFiles)
    Local Static $x = 0
    Local $suffixe

    For $i = 1 To $aNSFFiles[0][0]
        If $x Then $suffixe = "_" & $x
        $sFileName = StringRegExpReplace($aNSFFiles[$i][0], "(?i)^.+\\(.+)\.nsf", "$1-C" & $suffixe & ".nsf")


        FileWriteLine($hLogFile, "[" & _Now() & "] Copie de " & $aNSFFiles[$i][0] & " (" & _ReadableSize($aNSFFiles[$i][1]) & ") => " & $storage & $sFileName&@CRLF)

        If FileCopy($aNSFFiles[$i][0], $storage & $sFileName, 9) Then
            $sText = "Copie effectuee avec success"
        Else
            $sText = "ERREUR lors de la copie du fichier"
        EndIf
        FileWriteLine($hLogFile, "[" & _Now() & "] " & $sText)
        $x += 1
    Next

EndFunc
 
marche... "plus ou moins" mais c'est ok malgré tout

mais "quelque chose d'identique juste un autre extension..." lui ne marche pas !

Code : Tout sélectionner

Func _ProcessNSFCopyINI($aNSFFilesINI)
    Local Static $x = 0
    Local $suffixe

    For $i = 1 To $aNSFFilesINI[0][0]
        If $x Then $suffixe = "_" & $x
        $sFileName = StringRegExpReplace($aNSFFilesINI[$i][0], "(?i)^.+\\(.+)\.ini", "$1-C" & $suffixe & ".ini")


        FileWriteLine($hLogFile, "[" & _Now() & "] Copie de " & $aNSFFilesINI[$i][0] & " (" & _ReadableSize($aNSFFilesINI[$i][1]) & ") => " & $storage & $sFileName&@CRLF)

        If FileCopy($aNSFFilesINI[$i][0], $storage & $sFileName, 9) Then
            $sText = "Copie effectuee avec success"
        Else
            $sText = "ERREUR lors de la copie du fichier"
        EndIf
        FileWriteLine($hLogFile, "[" & _Now() & "] " & $sText)
        $x += 1
    Next

EndFunc
 
[2015-10-21 16:29:55] -> C:\ 2 fichiers trouves pour une taille de 8.62 Ko
[2015-10-21 16:29:55] Copie de c:\Notes\notes.ini (8.56 Ko) => C:\bulk\backup_test\poa11546\c:\Notes\notes.ini
[2015-10-21 16:29:55] ERREUR lors de la copie du fichier
[2015-10-21 16:29:55] Copie de c:\Windows\notes.ini (55 octets) => C:\bulk\backup_test\poa11546\c:\Windows\notes.ini
[2015-10-21 16:29:55] ERREUR lors de la copie du fichier


MAISSSSSS POURQUOI ( je vais me permettre un LOL ) par ce que je men vien vraiment decourager...

merci encore des futures réponses.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#18

Message par jguinch »

Il n'y a pas besoin de dupliquer la fonction, tu peux utiliser la même à chaque fois.
J'ai modifié un peu le code, regarde si ça te va (j'ai rien testé, donc c'est pas improbable qu'il y ait des erreurs)
► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
gh0stid
Niveau 2
Niveau 2
Messages : 15
Enregistré le : jeu. 15 oct. 2015 19:28
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#19

Message par gh0stid »

j'approche decidement de la depression ...

malheureusement le code ne fonctionne pas. il fait même un nouveau comportement ?

pour une raison que j'ignore, maintenant il copie l'arborescence des fichiers aussi ...

prendre compte du nouveau code, des ajouts on ete fait, de la, le besoin des doublons de fonctions :
► Afficher le texte
en gros.. le resultat donne ca maintenant :

Code : Tout sélectionner

...
[2015-10-22 09:33:55] Copie de c:\Notes\data\desktop6.ndk (4.5 Mo) => C:\bulk\backup_test\poa11546\c:\Notes\data\desktop6.ndk
[2015-10-22 09:33:55] ERREUR lors de la copie du fichier
[2015-10-22 09:33:55] -> G:\ 1 fichiers trouves pour une taille de 14 Mo
[2015-10-22 09:33:55] Copie de \\fs1\g\DS\C - SGPI-EFI\SGPI\PROJETS\T100-T299\T106\4.1 Documents ad\Corr\T106 Rna1724.nsf (14 Mo) => C:\bulk\backup_test\poa11546\\\fs1\g\DS\C - SGPI-EFI\SGPI\PROJETS\T100-T299\T106\4.1 Documents ad\Corr\T106 Rna1724.nsf
[2015-10-22 09:33:55] Copie effectuee avec success
[2015-10-22 09:33:55] -> H:\ 2 fichiers trouves pour une taille de 214.5 Mo
[2015-10-22 09:33:55] Copie de \\fs2\home\SAVA0002\notes\a_asavar.nsf (107.25 Mo) => C:\bulk\backup_test\poa11546\a_asavar-H.nsf
[2015-10-22 09:33:56] Copie effectuee avec success
[2015-10-22 09:33:56] Copie de \\fs2\home\SAVA0002\notes\archive\a_asavar.nsf (107.25 Mo) => C:\bulk\backup_test\poa11546\a_asavar-H_1.nsf
[2015-10-22 09:33:57] Copie effectuee avec success
[2015-10-22 09:33:57] Fin
 
bref...

honetement, il me reste vraiment plus qua reussir a isoler le filename, j'ai tenter avec _PathSplit sans succès. et j'ai aussi tenter de reussir avec les exemples de $sFileName = StringRegExpReplace($aNSFFilesH[$i][0],

sans succès aussi comme vous avez pu déjà constater.
le plus frustrant est surtout que j'ai beau tenter de comprendre les expression utilisé et suggéré pour $sFileName = StringRegExpReplace($aNSFFilesH[$i][0],

je ne vois pas pourquoi ca marche pour le H: mais pas pour le C ou le G ?
il n'y a pas moyen de simplement dire, part de la droite vers la gauche, des que tu intercepte un \, considere que tout ce qui est avant, c'st ton $filename ?

Encore une fois...
Merci
Oversid3
Niveau 3
Niveau 3
Messages : 45
Enregistré le : jeu. 29 janv. 2015 11:20
Status : Hors ligne

Re: [..] Chercher récursivement des fichiers et filesize > t

#20

Message par Oversid3 »

Je n'ai pas tout suivi, mais c'est definitivement possible "lui dire de s'arreter aprés un /"

Regarde du côté de StringSplit ou _ArrayTrim
Répondre