批量扫描硬盘驱动器上的空间大小

时间:2014-01-20 13:43:32

标签: batch-file windows-7

我正在制作一个程序来加速你的电脑,它所做的一件事是删除临时文件,任何人都知道如何检查硬盘驱动器上有多少空间,最好以KB为单位。我的操作系统是windows 7 ultimate 32-bit

3 个答案:

答案 0 :(得分:2)

你可以试试这个,解释在代码中:

@ECHO OFF &SETLOCAL
for /f "tokens=3" %%a in ('dir /-c %cd:~0,3%') do set "Bytes=%%~a"
echo(Free space in %cd:~0,2%
echo(Bytes: %Bytes%
set /a KiloByte=%Bytes:~0,-3%
echo(KByte: %KiloByte%
set /a MegaByte=%Bytes:~0,-6%
echo(MByte: %MegaByte%
set /a GigaByte=MegaByte/1024
echo(GByte: %GigaByte%
set /a TeraByte=GigaByte/1024
echo(TByte: %TeraByte%

请注意,cmd无法使用大于2,147,483,647 (2^31)-1的数字进行计算。

答案 1 :(得分:1)

如果不需要标头,您可能需要消除第一行。 wmic用于为每个磁盘获取可用空间。如果

,您可能需要添加过滤器“where DriveType = 3”
    @echo off
    SetLocal enabledelayedexpansion 
    set command="wmic /node:"%COMPUTERNAME%" LogicalDisk Where Get DeviceID,FreeSpace"
    for /f "tokens=1,2,*" %%a in ('%command%') do (
        set disk=%%a
        set freeSpace=%%b
        if "%%a" NEQ ""  if "%%b" NEQ "" (
            set disk=%%a
            set freeSpace=%%b
            echo !disk! !freeSpace!
        )
    )

答案 2 :(得分:1)

这是一个批处理文件,使用来自修改后的帖子的powershell,并返回2位数字的可用空间KB。对于十进制KB,将1024更改为1000。

@echo off
if "%~1"=="" (
echo %%1 is a drive letter such as c
echo and returns free disk space from that drive in KB 
pause
goto :eof
)
>  s.ps1 echo Get-WMIObject -Query "SELECT * FROM Win32_LogicalDisk WHERE Caption='%1:'" `
>> s.ps1 echo  ^| %% { 
>> s.ps1 echo      $f = [System.Math]::Round($_.FreeSpace/1024,0);
>> s.ps1 echo      $t = [System.Math]::Round($_.Size/1024,0);
>> s.ps1 echo      Write-Host ('Freespace ' + $f);
>> s.ps1 echo  }

powershell -ExecutionPolicy ByPass -command ".\s.ps1"
del s.ps1
pause
goto :eof