Espace occupé disque
Fermé
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
-
26 févr. 2022 à 14:43
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 27 févr. 2022 à 21:43
barnabe0057 Messages postés 14454 Date d'inscription lundi 2 mars 2009 Statut Contributeur Dernière intervention 30 novembre 2024 - 27 févr. 2022 à 21:43
A voir également:
- Espace occupé disque
- Espace insécable word - Guide
- Cloner disque dur - Guide
- Defragmenter disque dur - Guide
- Libérer espace gmail - Guide
- Chkdsk disque dur externe - Guide
7 réponses
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
27 févr. 2022 à 10:29
27 févr. 2022 à 10:29
Bonjour brucine,
J'espère que tu vas bien. Je n'ai pas de réelle solution à te proposer car toi et moi savons très bien qu'il n'y en a malheureusement pas.
Je peux te proposer un script de conversion simple qui n'est pas d'une précision absolue mais suffisante pour mon utilisation et peut-être la tienne.
A partir des données que ton script récupère (espace total et espace libre) tu pourrais utiliser mon script comme une fonction qui les convertirait vers l'unité la plus adaptée.
J'espère que tu vas bien. Je n'ai pas de réelle solution à te proposer car toi et moi savons très bien qu'il n'y en a malheureusement pas.
Je peux te proposer un script de conversion simple qui n'est pas d'une précision absolue mais suffisante pour mon utilisation et peut-être la tienne.
A partir des données que ton script récupère (espace total et espace libre) tu pourrais utiliser mon script comme une fonction qui les convertirait vers l'unité la plus adaptée.
@echo off
setlocal enabledelayedexpansion
set /p espaceLibre="Entrez l'espace libre du volume (en octets) : "
call :conversion "!espaceLibre!" "espaceLibre"
echo. & set /p tailleTotale="Entrez la taille totale du volume (en octets) : "
call :conversion "!tailleTotale!" "tailleTotale" !unite!
set /a espaceOccupe=!tailleTotale!-!espaceLibre!
set "espaceOccupe=!espaceOccupe:~0,-2!,!espaceOccupe:~-2!"
echo. & echo Espace occupé : !espaceOccupe! !unite!
echo. & pause
exit
:conversion
echo. & set gel=0
set "nombre=%~1"
for %%A in (Ko, Mo, Go, To) do (
if "!gel!"=="0" (
if !nombre! GTR 999 (
set "decimal=!nombre:~-3,2!"
set "nombre=!nombre:~0,-3!"
set "unite=%%A"
echo Conversion : !nombre!,!decimal! !unite!
)
)
if "%%A"=="%~3" (set gel=1)
)
set /a "%2=!nombre!!decimal!"
rem echo Conversion : !nombre!,!decimal! !unite!
goto :eof
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
2 729
27 févr. 2022 à 12:19
27 févr. 2022 à 12:19
Bonjour,
Le script de conversion, je l'ai sinon que j'ai pinaillé avec quelque chose d'un peu "plus précis" (et donc de plus long).
J'ai tout un tas de vieilleries dans mes archives, dont un dossier Ressource Kit Win2K mais dans lequel je n'ai pas trouvé la fameuse commande DIRUSE: parce que j'y avais fait le ménage en n'y conservant qu'un dossier dont je ne sais même plus à quoi il correspond.
Expérience faite pour ceux que cela peut intéresser, on trouve l'ISO du Ressource Kit un peu partout sur le Web et la commande DIRUSE s'y trouve dans filedisk.cab.
C'est la solution la plus simple, on écrit:
et on parle d'autre chose, l'inconvénient de cette solution est qu'elle n'est pas native donc portable.
Il y a bien un subterfuge (puisqu'il faut des inconvénients, il ne fonctionne bien sûr que sur Windows en version française):
mais j'ai encore besoin de toi: le résultat est bon, mais je ne trouve aucun moyen de l'envoyer vers une variable comme dans la syntaxe précédente (comme dans la commande DIR simple, on veut sortir simplement tokens=3).
Merci...
Le script de conversion, je l'ai sinon que j'ai pinaillé avec quelque chose d'un peu "plus précis" (et donc de plus long).
J'ai tout un tas de vieilleries dans mes archives, dont un dossier Ressource Kit Win2K mais dans lequel je n'ai pas trouvé la fameuse commande DIRUSE: parce que j'y avais fait le ménage en n'y conservant qu'un dossier dont je ne sais même plus à quoi il correspond.
Expérience faite pour ceux que cela peut intéresser, on trouve l'ISO du Ressource Kit un peu partout sur le Web et la commande DIRUSE s'y trouve dans filedisk.cab.
C'est la solution la plus simple, on écrit:
FOR /F "usebackq tokens=1 skip=2 delims= " %%F IN (`diruse M:`) DO set "size=%%F"
et on parle d'autre chose, l'inconvénient de cette solution est qu'elle n'est pas native donc portable.
Il y a bien un subterfuge (puisqu'il faut des inconvénients, il ne fonctionne bien sûr que sur Windows en version française):
DIR L: /A-D/W/S |FIND "fichier(s)"|SORT/R |FIND/N "fichier(s)"|FIND "[1]"
mais j'ai encore besoin de toi: le résultat est bon, mais je ne trouve aucun moyen de l'envoyer vers une variable comme dans la syntaxe précédente (comme dans la commande DIR simple, on veut sortir simplement tokens=3).
Merci...
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
Modifié le 27 févr. 2022 à 13:45
Modifié le 27 févr. 2022 à 13:45
Je ne vois pas de difficulté particulière, chez moi ceci fonctionne :
Personnellement j'aurais simplifié ta commande comme ceci :
FOR /F "tokens=2 delims=)" %%A IN ('DIR C: /A-D/W/S ^| FIND "fichier(s)" ^| SORT/R ^| FIND /N "fichier(s)" ^| FIND "[1]"') DO set "result=%%A" set "result=%result: =%" set "result=%result:octets=%"
Personnellement j'aurais simplifié ta commande comme ceci :
FOR /F "tokens=2 delims=)" %%A IN ('DIR C: /A/S ^| FIND "fichier(s)"') DO set "result=%%A" set "result=%result: =%" set "result=%result:octets=%"
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
2 729
27 févr. 2022 à 17:59
27 févr. 2022 à 17:59
J'ai tellement essayé de triturer la sortie que en effet -D/W ne sont pas utiles.
Ta formule simplifiée ne fonctionne pas parce que la commande DIR renvoie autant de lignes "fichiers" qu'il y a de dossiers avec leur taille; la première (et comme d'ailleurs la mienne initiale) non plus puisque le retour en est:
alors qu'on ne veut que le nombre d'octets (avant conversion); ça, c'est capillotracté en passant par un fichier provisoire, mais ça marche, si tu as moins moche, je t'écoute:
Ta formule simplifiée ne fonctionne pas parce que la commande DIR renvoie autant de lignes "fichiers" qu'il y a de dossiers avec leur taille; la première (et comme d'ailleurs la mienne initiale) non plus puisque le retour en est:
[1] 295 fichier(s) 448 056 676 686 octets
alors qu'on ne veut que le nombre d'octets (avant conversion); ça, c'est capillotracté en passant par un fichier provisoire, mais ça marche, si tu as moins moche, je t'écoute:
chcp 1252
FOR /F "delims=" %%A IN ('DIR L: /A/S ^| FIND "fichier(s)" ^| SORT/R ^| FIND /N "fichier(s)" ^| FIND "[1]"') DO ECHO %%A>%~dp0prov.txt
FOR /F "tokens=4 delims= " %%F in ('type %~dp0prov.txt ^| find "fichier(s)"') DO SET "SIZE=%%F"
DEL %~dp0prov.txt
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
27 févr. 2022 à 19:40
27 févr. 2022 à 19:40
La commande DIR peut renvoyer autant de lignes "fichiers" qu'elle veut, nous on cherche juste à récupérer la dernière ligne qui indique le total. Si c'est l'affichage des lignes superflues qui te gène ça peut se régler.
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
2 729
>
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
27 févr. 2022 à 19:53
27 févr. 2022 à 19:53
Tout à fait.
Mais pour que la ligne octets (pas libres) soit rendue pour l'ensemble d'un lecteur (et pas seulement tel dossier), je n'ai pas trouvé d'autre cuisine que le commutateur /S, et qui a effet d'afficher le mot "fichier(s)" et l'espace correspondant non pas seulement pour le total mais pour chaque sous-dossier.
D'où la deuxième cuisine (et qui fonctionne mais n'est pas très élégante) de n'afficher que la dernière ligne correspondant au total devenue première par SORT/R puis FIND /N.
Mais pour que la ligne octets (pas libres) soit rendue pour l'ensemble d'un lecteur (et pas seulement tel dossier), je n'ai pas trouvé d'autre cuisine que le commutateur /S, et qui a effet d'afficher le mot "fichier(s)" et l'espace correspondant non pas seulement pour le total mais pour chaque sous-dossier.
D'où la deuxième cuisine (et qui fonctionne mais n'est pas très élégante) de n'afficher que la dernière ligne correspondant au total devenue première par SORT/R puis FIND /N.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
Modifié le 27 févr. 2022 à 20:42
Modifié le 27 févr. 2022 à 20:42
On ne doit pas avoir la même version de windows, sur mon windows 8.1 si je mets ma solution dans un script (qui commence par @echo off) alors je n'ai pas l'affichage des lignes superflues :
Par contre si je tape directement ma boucle FOR dans une invite de commandes j'obtiens l'affichage des lignes superflues, certainement à cause de l'absence de @echo off
@echo off FOR /F "tokens=2 delims=)" %%A IN ('DIR C: /A/S ^| FIND "fichier(s)"') DO set "result=%%A" set "result=%result: =%" set "result=%result:octets=%" echo %result% pause
Par contre si je tape directement ma boucle FOR dans une invite de commandes j'obtiens l'affichage des lignes superflues, certainement à cause de l'absence de @echo off
brucine
Messages postés
18384
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
28 décembre 2024
2 729
27 févr. 2022 à 21:14
27 févr. 2022 à 21:14
L'écho est bien dans le fichier de travail, mais le fait qu'il soit zappé évidemment dans des tests à la ligne de commande et aussi dans des bouts de tests batch ne change rien à la situation, et Windows 10 ou 8 non plus.
C'est moi qui suis blond, ce n'est pas mon jour, j'avais initialement pris "295 fichier(s) 448 056 676 686 octets" pour 4 "mots" puis du coup zappé les tokens qui ne retournaient rien; en remettant tokens=2, ça marche tout de suite mieux.
Désolé du dérangement, merci...
C'est moi qui suis blond, ce n'est pas mon jour, j'avais initialement pris "295 fichier(s) 448 056 676 686 octets" pour 4 "mots" puis du coup zappé les tokens qui ne retournaient rien; en remettant tokens=2, ça marche tout de suite mieux.
Désolé du dérangement, merci...
barnabe0057
Messages postés
14454
Date d'inscription
lundi 2 mars 2009
Statut
Contributeur
Dernière intervention
30 novembre 2024
4 918
27 févr. 2022 à 21:43
27 févr. 2022 à 21:43
Ce sont des choses qui arrivent.
Bonne soirée, à la prochaine.
Bonne soirée, à la prochaine.