有没有办法在不必安装某些第三方应用程序的情况下获取CMD中磁盘或文件夹的可用磁盘空间量?
我有一个CMD将一个大文件复制到一个给定的目录,当然可以使用复制命令的errorlevel返回,但是我必须等待复制文件所需的时间(例如...到那时)磁盘已满,复制操作失败).
我想在开始复制之前知道它是否有任何想法.从Sysinternals尝试了DU.EXE实用程序,但只显示占用空间.
如果你运行" dir c:\
",最后一行将给你可用的磁盘空间.
编辑:
更好的解决方案:" fsutil volume diskfree c:
"
可能的解决方案:
dir|find "bytes free"
适用于Windows XP及更高版本的更" 高级解决方案 ":
wmic /node:"%COMPUTERNAME%" LogicalDisk Where DriveType="3" Get DeviceID,FreeSpace|find /I "c:"
在Windows管理规范命令行(WMIC)工具(了Wmic.exe)可以收集大量的关于关于在Windows Server 2003以及Windows XP或Vista的信息.该工具使用Windows Management Instrumentation(WMI)访问底层硬件.不适用于Windows 2000.
您可以通过在DIR命令上使用/ -C来避免使用逗号.
FOR /F "usebackq tokens=3" %%s IN (`DIR C:\ /-C /-O /W`) DO ( SET FREE_SPACE=%%s ) ECHO FREE_SPACE is %FREE_SPACE%
如果要将可用空间与所需空间进行比较,可以执行以下操作.我用千位分隔符指定了数字,然后删除它们.没有逗号很难掌握数字.SET/A很好,但它停止使用大数字.
SET EXITCODE=0 SET NEEDED=100,000,000 SET NEEDED=%NEEDED:,=% IF %FREE_SPACE% LSS %NEEDED% ( ECHO Not enough. SET EXITCODE=1 ) EXIT /B %EXITCODE%
使用此命令,您可以找到所有分区,大小和可用空间: wmic logicaldisk get size, freespace, caption
显示所有磁盘;总容量,已用容量和可用容量。您可以通过各种命令行选项更改输出。
你可以从它http://www.paulsadowski.com/WSH/cmdprogs.htm,http://unxutils.sourceforge.net/或其他地方。这是像du这样的标准unix-util。
df -h
将显示驱动器的所有已用和可用磁盘空间。例如:
M:\>df -h Filesystem Size Used Avail Use% Mounted on C:/cygwin/bin 932G 78G 855G 9% /usr/bin C:/cygwin/lib 932G 78G 855G 9% /usr/lib C:/cygwin 932G 78G 855G 9% / C: 932G 78G 855G 9% /cygdrive/c E: 1.9T 1.3T 621G 67% /cygdrive/e F: 1.9T 201G 1.7T 11% /cygdrive/f H: 1.5T 524G 938G 36% /cygdrive/h M: 1.5T 524G 938G 36% /cygdrive/m P: 98G 67G 31G 69% /cygdrive/p R: 98G 14G 84G 15% /cygdrive/r
Cygwin可从以下网址免费获得:https : //www.cygwin.com/ 它在命令提示符处添加了许多强大的工具。要获取驱动器M上的可用空间(在Windows中映射到共享驱动器),可以输入:
M:\>df -h | grep M: | awk '{print $4}'
以下脚本将为您提供驱动器上的空闲字节:
@setlocal enableextensions enabledelayedexpansion @echo off for /f "tokens=3" %%a in ('dir c:\') do ( set bytesfree=%%a ) set bytesfree=%bytesfree:,=% echo %bytesfree% endlocal && set bytesfree=%bytesfree%
请注意,这取决于dir
命令的输出,该输出需要包含格式的可用空间的最后一行24 Dir(s) 34,071,691,264 bytes free
.特别:
它必须是最后一行(或者您可以修改for
循环以显式检测行,而不是依赖于bytesfree
每行的设置).
自由空间必须是第三个"单词"(或者您可以更改tokens=
位以获得不同的单词).
千位分隔符是,
字符(或者您可以将逗号的替换更改为其他内容).
它不会污染您的环境命名空间,只bytesfree
在退出时设置变量.如果dir
输出不同(例如,不同的区域设置或语言设置),则需要调整脚本.