Source code for diskuse.bat

(view source code as plain text)

@ECHO OFF

:: Use local variables

IF "%OS%"=="Windows_NT" SETLOCAL

:: Check command line arguments and Windows version

IF "%~1"=="/?" GOTO Syntax

IF NOT "%OS%"=="Windows_NT" GOTO Syntax

:: Go to start directory

SET StartDir=%CD%

IF NOT "%~1"=="" SET StartDir=%~1

PUSHD "%StartDir%"

:: Display header

ECHO Directory Space used (MB)

ECHO.========= ===============

:: Display disk usage for start directory

IF NOT EXIST *.* GOTO SubDirs

FOR /F "tokens=3,4*" %%A IN ('DIR %1 /A-D /-C ^| FIND /I "File(s)"') DO SET .\=%%A

SET /A .\=.\+524288

SET /A .\=.\/1048576

ECHO..\ %.\%

SET .\=

:: Display disk usage for every subdirectory

:SubDirs

FOR /D %%A IN (*.*) DO CALL :List "%%~A"

:: Done

POPD

GOTO End

:List

:: Set variable value to bytes used by directory

FOR /F "tokens=3,4*" %%B IN ('DIR /A /-C /S "%~1" ^| FIND /I "File(s)"') DO SET ListDir=%%~B

:: Add 0.5MB in order to properly round the value when integer divided by 1MB

SET /A ListDir=%ListDir%+524288

:: Integer divide by 1MB

SET /A ListDir=%ListDir%/1048576

:: Display resulting value in MB

ECHO.%~1 %ListDir%

:: Clear variable

SET ListDir=

GOTO:EOF

:Syntax

ECHO.

ECHO DiskUse, Version 4.10 for Windows NT 4 / 2000 / XP

ECHO Display disk space used by subdirectories (tab delimited)

ECHO.

ECHO Usage: DISKUSE [ startdir ]

ECHO.

ECHO Where: "startdir" is the directory containing subdirectories to be

ECHO inventoried (default is the current directory)

ECHO.

ECHO Note: Due to batch math limitations this batch file will return negative

ECHO numbers if the disk space used by subdirectories exceeds 2GB.

ECHO For Windows 2000/XP, upgrade to version 5 and use its /L switch.

ECHO.

ECHO Written by Rob van der Woude

ECHO http://www.robvanderwoude.com

:End

IF "%OS%"=="Windows_NT" ENDLOCAL