J'essaie de créer un fichier de commandes pour extraire la taille totale et l'espace libre du lecteur C: \ des serveurs (script exécuté localement). J'ai également besoin que la sortie soit facilement lisible, donc les octets ne fonctionneront pas, donc je suis d'accord avec une ligne de commande qui crée un fichier temp .vbs.
Ce qui suit semble fonctionner, mais le formatage / mathématiques n'est pas correct.
setlocal
for /f "tokens=6" %a in ('fsutil volume diskfree C: ^| find "of bytes"') do set diskspace=%a
echo wsh.echo FormatNumber(cdbl(%diskspace%)/1024, 0) > %temp%.\tmp.vbs
for /f %a in ('cscript //nologo %temp%.\tmp.vbs') do set diskspace=%a
del %temp%.\tmp.vbs
echo For example %diskspace%
Les commandes ci-dessus ne montrent également que de l'espace libre ... Je voudrais également la taille totale ... Vous vous demandez si la commande suivante pourrait être meilleure pour extraire les informations:
WMIC LOGICALDISK GET Name,Size,FreeSpace | find /i "C:"
Notez également que je veux que cela puisse être copié / collé directement dans une invite de commande (pas un fichier de commandes - exigences forcées). J'ai déjà supprimé les "%%" du code ci-dessus.
Remarque: doit s'exécuter en mode natif sur Server 2003+ (donc Powershell est sorti, ainsi que tous les utilitaires tiers).
la source
Réponses:
Dans le cadre de la clause pas un fichier de commandes - exigences obligatoires , la prochaine
cmd
ligne peut aider:Sortie :
la source
Je me rends compte que vous regardez comme VBS en ce moment, mais PowerShell peut le faire très facilement:
La première ligne obtient les informations sur le disque à partir de WMI (fait juste C: dans cet exemple), et ne sélectionne que l'espace libre et les tailles totales.
Dans les deux lignes suivantes, écrivez les tailles d'espace libre et total sur la console, formatées pour être en Go, avec des fractions tronquées.
Exemple de sortie (en l'état):
la source
Dans un fichier de commandes, vous pouvez obtenir la taille du disque en Go d'un disque spécifié en utilisant un script DiskPart. Dans cet exemple, je configure l'index de disque spécifique en fonction de son nom de modèle (en supposant qu'il n'y en a qu'un comme celui-ci sur l'ordinateur). Modifiez la chaîne « Disque SATA » pour correspondre au modèle de votre lecteur de disque. Vous pouvez obtenir le nom du modèle en exécutant la commande " wmic diskdrive get Model, Index " dans cmd.
Bien sûr, vous pouvez utiliser une propriété différente du disque dans la commande wmic - tapez wmic diskdrive get /? pour obtenir une liste de toutes les propriétés de disque que vous pouvez utiliser.
la source
Si vous avez juste besoin de vérifier si le disque a suffisamment d'espace libre (pour installer ou copier quelque chose par exemple), vous pouvez essayer la requête wmic comme ceci:
wmic LogicalDisk where "DeviceID='c:' and FreeSpace > 10737418240" get DeviceID 2>&1 ^ | find /i "c:" >nul || (echo not enough space&exit 1)
cela interrompra l'exécution du fichier batch s'il reste moins de 10 Go sur C:
la source
Divisez par 1024 pour obtenir des kibytes (2 ^ 10). Divisez par 1024 x 1024 pour obtenir Mioctets (2 ^ 20). Divisez par 1024 x 1024 x 1024 pour obtenir des Gibytes (2 ^ 30).
Windows appelle ces unités kilo-octets, mégaoctets et gigaoctets pour des raisons historiques. Je pense que mon boîtier est bon.
Alors changez vos sommes.
la source