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

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

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

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

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

(从服务器故障中的一个旧回答中获得)

可靠地获取可用磁盘空间的最简单方法是使用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命令可以为我们删除它们:

 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。

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

您可以使用PowerShell轻松地在现代Windows中执行此操作。

此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来运行这些命令。

get-psdrive | 凡免费*