(Extrait d'une ancienne réponse de mes plus FAUTIVE Server)
La meilleure façon d'obtenir de manière fiable à l'espace libre sur le disque en utilisant WMI. Lorsque vous essayez d'analyser la sortie de dir
vous obtenez toutes sortes de problèmes amusants, à tout le moins avec des versions de Windows dans d'autres langues. Vous pouvez utiliser wmic
pour interroger l'espace libre sur un disque:
wmic logicaldisk where "DeviceID='C:'" get FreeSpace
Ceci affichera quelque chose comme
FreeSpace
197890965504
Vous pouvez forcer cela en une seule ligne en ajoutant le commutateur /format:value
:
> wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value
FreeSpace=197890965504
Il y a quelques lignes vides là, mais (environ trois ou quatre) qui ne se prêtent pas bien pour le traitement. Heureusement, la commande for
peut les supprimer pour nous quand nous ne tokenizing:
for /f "usebackq delims== tokens=2" %x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%x
La bonne chose est que puisque nous n'utilisons le deuxième jeton toutes les lignes vides (qui ne disposent pas d'un second jeton) Inscrivez-vous ignoré.
Souvenez-vous de doubler les signes %
lorsque vous utilisez ce dans un fichier batch:
for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%x
Vous pouvez maintenant utiliser l'espace libre qui est stocké dans la variable d'environnement %FreeSpace%
.
Obtenir des pourcentages maintenant est un peu délicat car les fichiers batch ne prennent en charge que les entiers 32 bits pour le calcul. Cependant, vous n'avez probablement pas besoin de calculer cela pour l'octet; Je pense que mégaoctets sont assez:
for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value`) do set FreeSpace=%%x
for /f "usebackq delims== tokens=2" %%x in (`wmic logicaldisk where "DeviceID='C:'" get Size /format:value`) do set Size=%%x
set FreeMB=%FreeSpace:~0,-6%
set SizeMB=%Size:~0,-6%
set /a Percentage=100 * FreeMB/SizeMB
echo C: is %Percentage% % free
Cela devrait fonctionner à moins que vos volumes obtiennent plus de 20 TiB.
Vous ne pouvez pas vraiment parler de ms-dos lorsque vous êtes sur une fenêtre> 98. – ChristopheD
Oui, veuillez spécifier votre plate-forme. Et que voulez-vous dire exactement par "Mapped" lecteurs? –
Balises modifiées et question nettoyée, en supposant que l'invite de commande Windows. –