Windows fichier de commandes pour obtenir le disque C:\ l'espace total et l'espace libre disponible
J'ai besoin d'un fichier bat pour obtenir le disque C:\ l'espace total et l'espace libre disponible en GO (giga-octets) dans un système Windows et de créer un fichier texte avec les détails.
Remarque: je ne veux pas utiliser tout utilitaires externes.
Je ne vois pas une question de programmation (de toute question d'ailleurs). Même si vous reformuler dans une programmation appropriée question, il n'y a pas de solution en utilisant natif du lot parce que les lots ne peuvent pas effectuer de calcul sur les grands nombres que vous allez voir aujourd'hui les disques durs. Pur natif du lot pourrait fournir gratuitement des octets, mais pas gratuitement GO.
Par "utilitaires externes," voulez-vous dire que vous ne voulez utiliser que des choses qui sont livrés avec Windows (version?, 7?), comme fsutil, wmic, etc.? Qu'en PowerShell ou VBScript? Ils sont livrés avec Windows.
Par "utilitaires externes," voulez-vous dire que vous ne voulez utiliser que des choses qui sont livrés avec Windows (version?, 7?), comme fsutil, wmic, etc.? Qu'en PowerShell ou VBScript? Ils sont livrés avec Windows.
OriginalL'auteur Mani | 2013-06-22
Vous devez vous connecter pour publier un commentaire.
couper les 9 chiffres de la taille en octets d'obtenir la taille en GO:
cmd peut calculer avec les nombres jusqu'à
2^31-1
(de 2 147 483 647 ~ 2.000001 Gigaoctets)La production dépend de la locale/régionale paramètres (tels que robocopy), je vais le changer pour un plus "à l'américaine" pour maintenant. Le GO valeurs ne sont pas mathématique correcte et peut varier de +/- 1 GO, de plus en plus important pour de petits volumes.
Vous pouvez ajouter une de plus POUR /F boucle avec delims=espace à dépouiller attaque et de fuite des espaces de valeur. Alors vous avez votre réponse n'est pas affecté par les paramètres régionaux.
Je ne sais pas pourquoi je suis en supposant que la fuite de caractère est un espace :/ ?
Si il n'y a jamais un caractère extra fin, indépendamment des paramètres régionaux, puis la longueur doit certainement être -9. Votre édité code est absolument faux. Il devrait être
%var:~0,-9%
avec supplément /F, ou%var:~1,-9%
sans. Je suppose que l'espace est une constante dans les paramètres régionaux.OriginalL'auteur Endoro
Pas une solution complète, par tout moyen, mais quelqu'un pourrait trouver cela utile:
OriginalL'auteur Joe Bourne
Ce n'est probablement pas ce que vous souhaitez car il utilise PowerShell, mais "utilitaires externes" est un peu nébuleux et me laisse une certaine marge de manœuvre. De Plus, il s'agit essentiellement d'un one-liner.
Depuis batch/CMD est mauvais à peu près tout, j'ai décidé d'utiliser PowerShell, qui est conçue pour ce genre de chose et a un accès facile et rapide à WMI.
Voici le code PowerShell:
Ce crache les deux valeurs séparées par une virgule. Maintenant, si seulement nous pouvions le faire dans une boucle FOR!
PowerShell a la belle capacité à accepter un Base64 de commande (pour éliminer le besoin de s'échapper et de rendre le code difficile à lire), donc tout ce que nous devons faire est de réduire cette commande autant que possible (pour réduire la taille de la chaîne codée—strictement un concept, ce n'est pas absolument nécessaire). J'ai aussi réduit la taille de nombres entiers, qui arrondis. C'est au moins plus proche que de jeter de l'ordre inférieur de chiffres décimaux.
La réduction du codé de commande et l'encodage en PowerShell ressemble à ceci:
(Voir PowerShell /? pour plus de détails.)
Je m'attends à ce à exécuter sur n'importe quel Win7 ou Win8 machine dans l'existence. Le Chic, le code ne repose pas sur des fonctionnalités avancées (sauf peut-être le EncodedCommand bits), donc si PoSH est installé sur l'XP ou Vista machine, il y a de bonnes chances de fonctionner. Je ne peux pas parler de l'histoire de MME de pousser Chic via Windows Update, mais je pense qu'il ya une bonne chance que cela fonctionne de manière ubiquitaire.
OriginalL'auteur mojo
Cela devrait fonctionner dans le lot:
OriginalL'auteur scriptmastere02