Taille partition ok en ligne de commandes mais pas en batch
brucine
Messages postés
21674
Date d'inscription
Statut
Membre
Dernière intervention
-
brucine Messages postés 21674 Date d'inscription Statut Membre Dernière intervention -
brucine Messages postés 21674 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à envoyer l'espace total de la partition C: vers une variable.
Aucun problème pour retrouver "l'information" à la ligne de commandes, par exemple:
En octets, mais ça, après, j'en fais mon affaire.
Par contre, j'ai beau tourner ça dans tous les sens dans une sentence FOR que je ne trouve aucun moyen d'obtenir le résultat dans un batch par exemple avec quelque chose de ce genre:
J'ai d'ailleurs le même souci avec une ligne elle me renvoyant le nom du disque si c'est un HDD:
sans compter que, dans ce dernier cas, je reçois du fait de l'itération et bien qu'il n'y ait qu'un HDD une ligne "écho désactivé"
Merci.
Je cherche à envoyer l'espace total de la partition C: vers une variable.
Aucun problème pour retrouver "l'information" à la ligne de commandes, par exemple:
C:\Users\bru\Desktop>wmic logicaldisk get name,size | find /i "C:"
C: 268626804736
En octets, mais ça, après, j'en fais mon affaire.
Par contre, j'ai beau tourner ça dans tous les sens dans une sentence FOR que je ne trouve aucun moyen d'obtenir le résultat dans un batch par exemple avec quelque chose de ce genre:
FOR /F "tokens=2 delims=" %%T in ('wmic logicaldisk get name^,size^|find /i "C:"') do echo %%T
J'ai d'ailleurs le même souci avec une ligne elle me renvoyant le nom du disque si c'est un HDD:
FOR /F "skip=1 tokens=1 delims=" %%C in ('wmic /NameSpace:\\root\Microsoft\Windows\Storage Path MSFT_PhysicalDisk Where "MediaType='3'" Get Model') do SET hd=%%C
sans compter que, dans ce dernier cas, je reçois du fait de l'itération et bien qu'il n'y ait qu'un HDD une ligne "écho désactivé"
Merci.
Configuration: Windows / Firefox 90.0
A voir également:
- Taille partition ok en ligne de commandes mais pas en batch
- Partage de photos en ligne - Guide
- Comment réduire la taille d'un fichier - Guide
- Mètre en ligne - Guide
- Invite de commandes - Guide
- Formulaire en ligne de meta - Guide
1 réponse
Salut brucine,
Dans ta première boucle FOR, pour corriger le problème il suffit d'utiliser : comme délimiteur
Dans ta dernière boucle FOR tu peux rajouter un FINDSTR . ou bien FINDSTR /V /R "^$" comme ceci :
Dans ta première boucle FOR, pour corriger le problème il suffit d'utiliser : comme délimiteur
Dans ta dernière boucle FOR tu peux rajouter un FINDSTR . ou bien FINDSTR /V /R "^$" comme ceci :
FOR /F "skip=1 tokens=1 delims=" %%C in ('wmic /NameSpace:\\root\Microsoft\Windows\Storage Path MSFT_PhysicalDisk Where "MediaType=3" Get Model ^| FINDSTR .') do echo.%%C
Le premier, je m'étais posé la question quant à savoir si les points faisaient ou non partie de la donnée (lecteur c:), puis ça m'était sorti de l'idée.
Quant au deuxième, en effet, je n'avais pas trouvé la bonne syntaxe FINDSTR.
Il ne me reste plus qu'à faire mes comptes d'apothicaire pour convertir mes octets en Go (RAM) voire plus gros (disques).
Merci beaucoup.
Tu peux faire des tests en modifiant la variable valeur
Il y a aussi probablement une question de compatibilité bien que je sois malhonnête puisque utilisant wmic (absent pour XP Home) et fsutil (droits administrateur).
De toute façon, c'est la vieillerie, ce soir, tout va mal; j'ai depuis longtemps un batch éprouvé qui transforme n'importe quelle valeur d'octets depuis quelques dizaines jusqu'à plusieurs dizaines de To (le problème, c'est le raccourci avec le tilde avec le minimum de perte dans chaque gamme, puisqu'on se fait jeter dès que le chiffre dépasse 2 EXP 32).
Et ce soir, s'agissant d'une quantité négligeable équivalente à quelques Go (RAM Disponible), je me fais jeter parce que le truc veut bien diviser par 1024 mais pas multiplier par 1000 (pour garder la précision en enlevant les chiffres par la droite, et même si je pinaille, puisque l'on aura beau en enlever 6 que l'on n'aura perdu que epsilon).
Demain, il fera jour...
Je t'épargne à cette heure les considérations logarithmiques, un calcul batch est planté dès 10 chiffres d'octets correspondant à autour de 2 Go.
Nouvelles du front. Pour la réduction des chiffres, c'était quand même assez exotique.
La taille en octets de la partition est bien rendue via wmic à 12 chiffres en-dessous de 1 To, soit 3 de trop, mais pour réduire à 9, il faut saisir:
Vive l'arithmétique...
Pas mieux concernant la RAM disponible que cette fois-ci systeminfo rend par exemple 4 780 (l'espace n'est pas une coquille), et il faut donc à nouveau tricher pour calculer:
Moyennant quoi le résultat obtenu est bon à 2 problèmes cosmétiques près:
L 'opérateur manquant, je ne sais pas puisque tout marche, il faudra que je prenne un moment pour isoler chaque commande pour voir d'où ça vient.
Aucune instance disponible est rendu par:
suivi de la même commande où MediaType=3, puisqu'il n'y a pas de SSD.
La commande ne produit pas de ERRORLEVEL (ou je ne sais pas où aller le chercher) de sorte à me débarrasser de ce message via une conditionnelle.
On peut peut-être tricher en faisant une conditionnelle sur la valeur de Mediatype, qui vaut forcément 3, 4, ou les deux, mais je ne sais pas comment:
Enfin, oui, Powershell, mais pour moi, c'est juste un mot ou presque:
On pourrait jouer ici sur les mots SSD ou HDD:
Ou là, l'inexistence du SSD ne retourne pas un message d'erreur mais un simple retour à la ligne:
A cela près que je n'ai aucune idée de comment retourner le résultat dans une ou deux selon le cas variables de mon batch pour l'y afficher.
Je te saoule encore, merci si tu as le temps et l'envie de t'occuper de la question.