Comment lister des fichiers dont la taille est supérieur à ?
Le
elminio

Bonjour à tous,
Je suis à la recherche d'un script qui me liste l'ensemble des fichiers d=
ont la taille est supérieur à X Mo dans les dossiers et sous-dossiers.
Cdt,
Elminio
Je suis à la recherche d'un script qui me liste l'ensemble des fichiers d=
ont la taille est supérieur à X Mo dans les dossiers et sous-dossiers.
Cdt,
Elminio
Bonjour,
Le chemin du répertoire principal de la partie à traiter est reçu e n
argument. La taille maximale est exprimée sur la première ligne, en
octets donc Taille = 1000000 X : dans l'exemple, j'ai fait le test sur 1
Ko de taille maximale, si on veut 1 Mo il faut mettre 1000 fois plus.
En rectifiant quand même la conversion, car j'ai exprimé un kilo-octe t
pour 1000 octets, alors qu'en fait c'est 1024, et pareil pour les
méga-octets exprimés en kilo-octets.
J'ai affiché les noms des sous-répertoires, si on ne les veut pas c'e st
facile à mettre en commentaire, dans la dernière boucle.
Exécuter ce script sous CScript pour avoir les résultats dans une
fenêtre de lignes de commandes, car si on l'exécute sous WScript, on
aura une boîte de message par fichier, plus une par répertoire.
On peut remplacer, sur la ligne WScript.Echo, Fil.Path par Fil.Name, si
on veut une ligne plus courte.
========= Début ListeTaille.vbs ======= ====
Taille = 1000
Set FSO = Wscript.CreateObject("Scripting.FileSystemObject")
Set Shell = Wscript.CreateObject("Wscript.Shell")
On Error Resume Next
Traite FSO.GetFolder(WScript.Arguments(0))
Sub Traite(Fld)
On Error Resume Next
For Each Fil in Fld.Files
siz = FormatNumber(Fil.Size, 0, -2, -2, -2)
If Fil.Size > Taille Then
WScript.Echo Fil.DateLastModified, Space(20 - Len(siz)) & siz,
Fil.Path
End IF
Next
For Each Sfld in Fld.SubFolders
WScript.Echo Sfld.DateLastModified, "<REP> ", Sfld.Name
Traite Sfld
Next
End Sub
========== Fin ListeTaille.vbs ======== ====
Ah ben si j'avais su, je me serais abstenu ...
Le 12/06/2013 10:36, Gloops a écrit :
Je ne sais pas ce que tu recherche mais voici peut être un début (fait rapidement sur W7) :
@Echo Off
Set /P SRC=Veuillez indiquer la source (exemple D:) :
Echo.
Set /P SIZE=Veuillez indiquer la taille recherchée :
SetLocal EnableDelayedExpansion EnableExtensions
For /F "tokens=* delims= " %%i In ('Dir %SRC%') Do (
Set ARG=%%i
Set ARG1 If "!ARG:~10,2!" EQU " " (
If /I "!ARG:~22,3!" NEQ "REP" (
If "!ARG:~18,1!" NEQ " " Set ARG1=!ARG:~18,1!
If "!ARG:~20,3!" NEQ " " Set ARG1=!ARG1!!ARG:~20,3!
If "!ARG:~24,3!" NEQ " " Set ARG1=!ARG1!!ARG:~24,3!
If "!ARG:~28,3!" NEQ " " Set ARG1=!ARG1!!ARG:~28,3!
If "!ARG:~32,3!" NEQ " " Set ARG1=!ARG1!!ARG:~32,3!
If !ARG1! GTR %SIZE% Echo !ARG!
)
)
)
Est-ce que tu as testé ce que j'ai fait ?
ça ne marche pas ?
--
Ah, mais je crois que j'ai deviné : je vois encore ce message, mais il
était sauvegardé en local chez moi, ça fait belle lurette qu'il n'é tait
plus sur les divers serveurs.
Autant pour moi, du coup si je ne le cite pas pour le rafraichir, il
faudrait être Madame Soleil ou assimilé pour comprendre, ou alors
Elminio avec une bonne mémoire ...
Ce qui me désole est que j'ai passé du temps là-dessus pour rien,
puisque dès le lendemain Elminio avait oublié où il avait posé sa
question, donc il n'a pas trouvé la réponse.
--