Free space in a CMD shell

后端 未结 9 1737
北海茫月
北海茫月 2020-12-02 10:04

Is there a way to get the amount of free diskspace of a disk or a folder in a CMD without having to install some thirdparty applications?

I have a CMD that copies a

相关标签:
9条回答
  • 2020-12-02 10:47

    I make a variation to generate this out from script:

    volume C: - 49 GB total space / 29512314880 byte(s) free

    I use diskpart to get this information.

    @echo off
    setlocal enableextensions enabledelayedexpansion
    set chkfile=drivechk.tmp
    if "%1" == "" goto :usage
    set drive=%1
    set drive=%drive:\=%
    set drive=%drive::=%
    dir %drive%:>nul 2>%chkfile%
    for %%? in (%chkfile%) do (
      set chksize=%%~z?
    )
    if %chksize% neq 0 (
      more %chkfile%
      del %chkfile%
      goto :eof
    )
    del %chkfile%
    echo list volume | diskpart | find /I " %drive% " >%chkfile%
    for /f "tokens=6" %%a in ('type %chkfile%' ) do (
        set dsksz=%%a
    )
    for /f "tokens=7" %%a in ('type %chkfile%' ) do (
        set dskunit=%%a
    )
    del %chkfile%
    for /f "tokens=3" %%a in ('dir %drive%:\') do (
      set bytesfree=%%a
    )
    set bytesfree=%bytesfree:,=%
    echo volume %drive%: - %dsksz% %dskunit% total space / %bytesfree% byte(s) free
    endlocal
    
    goto :eof
    :usage
      echo.
      echo   usage: freedisk ^<driveletter^> (eg.: freedisk c)
    
    0 讨论(0)
  • 2020-12-02 10:59

    The following script will give you free bytes on the drive:

    @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%
    

    Note that this depends on the output of your dir command, which needs the last line containing the free space of the format 24 Dir(s) 34,071,691,264 bytes free. Specifically:

    • it must be the last line (or you can modify the for loop to detect the line explicitly rather than relying on setting bytesfree for every line).
    • the free space must be the third "word" (or you can change the tokens= bit to get a different word).
    • thousands separators are the , character (or you can change the substitution from comma to something else).

    It doesn't pollute your environment namespace, setting only the bytesfree variable on exit. If your dir output is different (eg, different locale or language settings), you will need to adjust the script.

    0 讨论(0)
  • 2020-12-02 11:00

    Is cscript a 3rd party app? I suggest trying Microsoft Scripting, where you can use a programming language (JScript, VBS) to check on things like List Available Disk Space.

    The scripting infrastructure is present on all current Windows versions (including 2008).

    0 讨论(0)
提交回复
热议问题