代码之家  ›  专栏  ›  技术社区  ›  Arunachalam

如何找到映射驱动器的可用空间百分比?

  •  6
  • Arunachalam  · 技术社区  · 16 年前

    是否可以通过程序查找映射驱动器中的可用空间?

    如何使用MS DOS查找驱动器中的可用空间百分比。
    在您的硬盘中找到驱动器的可用空间可能很容易,但我需要找到映射驱动器的可用空间。

    我已经在系统中映射了一些文件服务器。

    在我的计算机中可以看到这个,但是如何在命令提示符中显示它?

    3 回复  |  直到 10 年前
        1
  •  11
  •   Joey Gumbo    16 年前

    (摘自我在服务器故障时的旧答案)

    可靠获取可用磁盘空间的最简单方法是使用WMI。尝试分析的输出时 dir 你会遇到各种各样有趣的问题,至少在其他语言的Windows版本中是这样。你可以使用 wmic 要查询驱动器上的可用空间:

    wmic logicaldisk where "DeviceID='C:'" get FreeSpace
    

    这将输出类似

    FreeSpace
    197890965504
    

    您可以通过添加 /format:value 开关:

    > wmic logicaldisk where "DeviceID='C:'" get FreeSpace /format:value
    
    FreeSpace=197890965504
    

    有一些空行,尽管(大约三到四行)不适合处理。幸运的是 for 当我们进行标记化时,命令可以为我们删除它们:

    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 FreeSpace /format:value`) do set FreeSpace=%%x
    

    现在可以使用存储在环境变量中的可用空间 %FreeSpace% .


    现在获取百分比有点困难,因为批处理文件只支持32位整数进行计算。但是,您可能不需要将其计算为字节;我认为兆字节足够了:

    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
    

    除非您的容量超过20 tib,否则这将起作用。

        2
  •  0
  •   Stephen Kellett    16 年前

    你需要 GetDiskFreeSpaceEx . 使用驱动器、映射驱动器等。

    ULARGE_INTEGER free;
    ULARGE_INTEGER total;
    ULARGE_INTEGER totalFree;
    BOOL           ok;
    
    ok = GetDiskSpaceFreeEx(path, &free, &total, &totalFree);
    if (ok)
    {
    // do your sums here, then printf the result
    }
    
        3
  •  0
  •   FoxDeploy    10 年前

    在现代的Windows中,使用PowerShell非常容易做到这一点。

    此cmdlet将返回一个不错的表,其中包含驱动器及其空间的一些信息。

    get-psdrive | Where Free*
    
    Name           Used (GB)     Free (GB) Provider      Root                                                                  CurrentLocation
    ----           ---------     --------- --------      ----                                                                  ---------------
    C                 101.65         65.59 FileSystem    C:\                                                                  WINDOWS\system32
    D                 801.55        129.96 FileSystem    D:\
    R                 443.17       2351.22 FileSystem    R:\
    X                 119.28        104.29 FileSystem    X:\
    

    可能是最简单和最短的方法得到你想要的。请记住,要运行这些命令,请启动PowerShell,而不是Cmd.exe。

    免费获取PSDrive*