【问题标题】:how to find the percentage of free space for mapped drives?如何找到映射驱动器的可用空间百分比?
【发布时间】:2011-02-02 02:44:04
【问题描述】:

是否可以通过编程方式找到映射驱动器中的可用空间?

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

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

可以在“我的电脑”中看到,但是如何在命令提示符中显示呢?

【问题讨论】:

  • 当你在 Windows > 98 上时,你真的不能说 ms-dos。
  • 是的,请指定您的平台。 “映射”驱动器到底是什么意思?
  • 更改了标签并清理了问题,假设是 Windows 命令提示符。
  • Windows平台win XP。
  • 我使用工具映射网络驱动器选项映射文件服务器

标签: windows command-line scripting


【解决方案1】:

我发现最好的是 powershell:

Get-PSDrive -PSProvider FileSystem | select Name, Root, @{n="Used in GB";e=
{[math]::Round($_.Used/1GB,2)}}, @{n="Free in GB";e=
{[math]::Round($_.Free/1GB,2)}}, @{n="Percent Free";e=
{([math]::Round($_.Free/($_.Used+$_.Free),2))*100}}

您可以删除中间两个并返回到列和/或执行一种模仿 grep 的 get-string 函数并保留行版本。我没有做更多的事情,但比命令更喜欢它,任何窗口都应该有 powershell。

这个例子给你:

Name         : C
Root         : C:\
Used in GB   : 58.77
Free in GB   : 416.92
Percent Free : 88

或者这个:

 Get-PSDrive -PSProvider FileSystem | select Name, Root,@{n="Percent Free";e={([math]::Round($_.Free/($_.Used+$_.Free),2))*100}}
Name Root Percent Free
---- ---- ------------
C    C:\            88

【讨论】:

    【解决方案2】:

    您可以在现代 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 来运行这些 cmd。

    获取-psdrive |免费的地方*

    【讨论】:

      【解决方案3】:

      (取自我在 Server Fault 上的旧答案)

      可靠地获取可用磁盘空间的最简单方法是使用 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。

      【讨论】:

      • gr8 谢谢你..实际上答案是 7.79 它显示为 7 它可以显示在浮动中吗?
      • @aru:不是这样,不是。 cmd 只支持整数计算。不过,您可以乘以 10000 而不是 100 并手动插入小数点。但是,空闲大小不得超过 200 GiB。
      【解决方案4】:

      您需要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
      }
      

      【讨论】:

        猜你喜欢
        • 2017-02-18
        • 1970-01-01
        • 1970-01-01
        • 2021-02-21
        • 2018-07-08
        • 1970-01-01
        • 2021-06-04
        • 2016-06-17
        • 2014-06-30
        相关资源
        最近更新 更多