Using the /I and /C Chkdsk.exe switches, New (Windows NT 4.0) SP4 CHKDSK switches, I have scripted DrvInfo.bat to return a volume's size, free space, and allocation unit.

The syntax for using DrvInfo.bat is:

DrvInfo DriveLetter DSize FSpace Alloc

Where:

DriveLetter is the volume's drive letter, with or without the colon (:).

DSize is a call directed numeric environment variable that will contain the volume's size, in kilobytes (KB).

FSpace is a call directed numeric environment variable that will contain the volume's free space, in kilobytes (KB).

Alloc is a call directed numeric environment variable that will contain the volume's Allocation Unit size, in bytes.

NOTE: See How do I rapidly retrieve a volume's size, free space, and allocation unit, in a batch, using freeware?

DrvInfo.bat contains:

@echo off
if \{%4\}==\{\} @echo Syntax: DrvInfo DriveLetter DSize FSpace Alloc&exit /b 1
setlocal ENABLEDELAYEDEXPANSION
set work=%1
set drive=%work:~0,1%
if not exist %drive%: @echo DrvInfo: %1 does NOT exist&endlocal&exit /b 2
@echo KB total disk space.>%TEMP%\DrvInfo.tmp
@echo KB available on disk.>>%TEMP%\DrvInfo.tmp
@echo bytes in each allocation unit.>>%TEMP%\DrvInfo.tmp
set /a cnt=0
call :parse>nul 2>&1
del /q %TEMP%\DrvInfo.tmp
endlocal&set /a %2=%DSize%&set /a %3=%FSpace%&set /a %4=%Alloc%
exit /b 0
:parse
for /f "Tokens=1" %%a in ('chkdsk %drive%: /I /C^|Findstr /G:%TEMP%\DrvInfo.tmp') do (
 set /a cnt=!cnt! + 1
 call :setit!cnt! %%a
)
goto :EOF
:setit1
set DSize=%1
goto :EOF
:setit2
set FSpace=%1
goto :EOF
:setit3
set Alloc=%1