Bonjour,
j’ai cherché sur le net un logiciel, qui fait un scanne du disque dur selectionné et classe les fichiers (et peut etre les repertoires) dans l’ordre décroissant de leur taille).
Mon problème c’est que je n’arrive pas a remettre la main dessus, tout ce que j’ai trouvé ce sont des logiciels qui font une représention raphique, ce que je ne veux pas, ce n’est pas ce que je cherche.
Merci de votre aide
je viens d’essaer mais ça n’est pas ce que je veux, car là il fait une liste par repertoire, alors que ce que je veux, c’est une grande liste pour tout le disque dur.
Comme ça je vois direct les plus gros.
Si tu n’es pas trop à cheval sur l’ordre des champs tu peux faire un petit .bat à placer à la racine de ton disque :
@echo off
(for /R %%I in (*) do echo %%~zI %%I) | sort > res.txt
Ensuite, une petite remise en forme de res.txt pour éliminer les lignes superflues
EDIT :
et après la mise en forme, un sort /R si tu tiens à l’ordre décroissant,
ou alors tu fais directement
(for /R %%I in (*) do echo %%~zI %%I) | sort /R > res.txt
mais ce sera moins lisible
Edité le 09/11/2007 à 22:38
“De plus il ne me les range pas en ordre décroissant”
Pour le décroissant, il faut le parametre /R
Mais de toute manière, le résultat n’est pas satisfaisant dans la mesure où il prend la taille comme du texte et non comme un nombre.
Il faudrait reformater la taille, avec un awk par exemple.
C’est juste une ligne à rajouter, si tu ne trouves pas mieux on pourra essayer
For -> on va examiner un par un le contenu décrit plus loin
/R -> faire la recherche sur le répertoire courant et ses sous répertoires
%I -> une variable pour stocker le nom du fichier en cours. Comme on est dans un batch et que % est un signe réservé, on le double (%%)
in (*) -> c’est l’étendue de la recherche : ici l’ensemble des fichiers qui seront donc traités un par un
do -> tout ce qui est derrière sera exécuté comme une nouvelle commande
echo %%~zI -> affiche la taille du fichier en cours
| (pipe) -> au lieu de donner le résultat de la commande précédente à l’écran, on le redirige en entrée de la commande sort
Pour plus de précisions, en mode commande, tape for /?, sort /? (en fait toute commande suivie de /?) et tu auras une aide détaillée sur l’usage de la commande en question.
Comme je te l’ai dit plus haut, ce que je t’ai donné pour le moment ne fonctionne pas de manière satisfaisante.
Je vais te donner (un peu plus tard) la syntaxe exacte de ce qu’il faudrait utiliser.
Déjà, dans un premier temps, tu peux essayer le code ci-dessous ; res1.txt devrait déjà plus se rapprocher de ce que tu cherches.
@echo off
if exist res.txt del res.txt
for /R %%I in (*) do echo %%~zI %%I >> res.txt
sort /R res.txt > res1.txt
Je n’ai pas trouvé de solution en mode commande pur.
Il y a certainement moyen à travers Set /a, mais je n’arrive pas à la faire fonctionner de manière satisfaisante.
Pour ceux qui voudraient se pencher sur le problème, il s’agit de faire fonctionner un set /a à l’intérieur d’une boucle for, sans qu’il retourne toujours la même valeur.
Sinon, il suffit de disposer de la commande gawk (gawk.exe à télécharger) et le code devient
@echo off
if exist res.txt del res.txt
for /R %%I in (*) do echo %%~zI %%I >> res.txt
gawk "{ printf(\"%%10d \" ,$1); print $2}" res.txt > res1.txt
sort /R res1.txt > res.txt
[quote="gcc"]
Pour plus de précisions, en mode commande, tape for /?, sort /? (en fait toute commande suivie de /?) et tu auras une aide détaillée sur l'usage de la commande en question.
[/quote]
ça j'étais au courant, merci quand meme :)
Et, je viens seulement de voir que tu avais mis les détails....:(