如何在cmd下显示硬盘容量更直观

habulu 2015-01-23 05:00:09
如题,要显示硬盘已用容量和剩余容量,最好还要个已使用容量所占百分比,这个命令可以显示:
WMIC LOGICALDISK WHERE MEDIATYPE='12' GET DESCRIPTION,DEVICEID,FILESYSTEM,SIZE,FREESPACE

Description DeviceID FileSystem FreeSpace Size
Local Fixed Disk C: NTFS 67822944256 107376275456
Local Fixed Disk D: NTFS 175455567872 215458754560
Local Fixed Disk E: NTFS 153090928640 177163763712

上面是用比特为单位的,能用G为单位显示吗,最好再再来个FreeSpace / Size 的比值
求高手指教
...全文
553 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2015-01-30
  • 打赏
  • 举报
回复
引用 1 楼 tcmakebest 的回复:
这个命令我的WIN7没效果, 那就需要写一个小程序了,把这些文本内容解析后,转成G单位重新显示. 语法稍作修改如下: WMIC LOGICALDISK WHERE MEDIATYPE='12' GET DESCRIPTION,DEVICEID,FILESYSTEM,SIZE,FREESPACE | MyProg.exe
仅供参考
#include <stdio.h>
char *human(__int64 v) {
    __int64 g;
    int i,j;
    char N[8]=" KMGTPE";
    static char s[20];

    g=512i64;
    for (i=0;i<6;i++) {
        if (v<g) break;//
        g=g<<10;
    }
    j=(i-1)*10;
    if (j<0) j=0;
    if (j==0) {
        if (i==0) {
            sprintf(s,"%I64d B",v);
        } else {//i==1
            sprintf(s,"%.4lg KB",(double)v/1024.0);
        }
    } else {//j>0
        v=v>>j;
        sprintf(s,"%.4lg %cB",(double)v/1024.0,N[i]);
    }
    return s;
}
int main() {
    __int64 d,t;
    while (1) {
        printf("Input a number(0..%I64d):",0x7FFFFFFFFFFFFFFFi64);
        fflush(stdout);
        rewind(stdin);
        if (1==scanf("%I64i",&d)) {
            if (d>=0i64) break;//
        }
    }
    printf("%I64d is %s\n",d,human(d));

    printf("\n");
    d=0i64;t=512i64;
    while (1) {
        printf("0x%016I64x is %s\n",d,human(d));
        d+=t>>2;
        if (d>=t) {
            d=t-1i64;
            printf("0x%016I64x is %s\n",d,human(d));
            d=t;
            printf("0x%016I64x is %s\n",d,human(d));
            if (d>=0x2000000000000000i64) {
                d=0x7FFFFFFFFFFFFFFFi64;
                printf("0x%016I64x is %s\n",d,human(d));
                break;//
            }
            if (d<0x0800000000000000i64) {
                d=d<<8;
                t=t<<10;
            } else {
                t=d<<1;
                d+=t>>2;
            }
        }
    }

    return 0;
}
//Input a number(0..9223372036854775807):0x33333333333
//3518437208883 is 3.199 TB
//
//0x0000000000000000 is 0 B
//0x0000000000000080 is 128 B
//0x0000000000000100 is 256 B
//0x0000000000000180 is 384 B
//0x00000000000001ff is 511 B
//0x0000000000000200 is 0.5 KB
//0x0000000000020000 is 128 KB
//0x0000000000040000 is 256 KB
//0x0000000000060000 is 384 KB
//0x000000000007ffff is 512 KB
//0x0000000000080000 is 0.5 MB
//0x0000000008000000 is 128 MB
//0x0000000010000000 is 256 MB
//0x0000000018000000 is 384 MB
//0x000000001fffffff is 512 MB
//0x0000000020000000 is 0.5 GB
//0x0000002000000000 is 128 GB
//0x0000004000000000 is 256 GB
//0x0000006000000000 is 384 GB
//0x0000007fffffffff is 512 GB
//0x0000008000000000 is 0.5 TB
//0x0000800000000000 is 128 TB
//0x0001000000000000 is 256 TB
//0x0001800000000000 is 384 TB
//0x0001ffffffffffff is 512 TB
//0x0002000000000000 is 0.5 PB
//0x0200000000000000 is 128 PB
//0x0400000000000000 is 256 PB
//0x0600000000000000 is 384 PB
//0x07ffffffffffffff is 512 PB
//0x0800000000000000 is 0.5 EB
//0x0c00000000000000 is 0.75 EB
//0x0fffffffffffffff is 0.999 EB
//0x1000000000000000 is 1 EB
//0x1800000000000000 is 1.5 EB
//0x1fffffffffffffff is 1.999 EB
//0x2000000000000000 is 2 EB
//0x7fffffffffffffff is 7.999 EB

ccbccb 2015-01-25
  • 打赏
  • 举报
回复
命令行窗口下本来很多东西就很不直观,干吗非得要在命令行窗口下去看?非得要这样的话建议写PowerShell或VBS脚本来实现。
tcmakebest 2015-01-24
  • 打赏
  • 举报
回复
这个命令我的WIN7没效果, 那就需要写一个小程序了,把这些文本内容解析后,转成G单位重新显示. 语法稍作修改如下: WMIC LOGICALDISK WHERE MEDIATYPE='12' GET DESCRIPTION,DEVICEID,FILESYSTEM,SIZE,FREESPACE | MyProg.exe

4,164

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 一般软件使用
社区管理员
  • 一般软件使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧