Можливо, є простіший спосіб зробити це, але ось що я використовую
Якщо все, що вам потрібно, - це байти, ви можете просто виконати цю команду, щоб змінити T на літеру диска вашого зовнішнього (для одного вкладиша в командному рядку змінити %%
на %
та set space=
на echo
)
for /f "tokens=3 delims= " %%a in ('dir /-c T: ^| find "bytes free"') do set space=%%a
якщо ви хочете взяти це та спростити його, спочатку встановіть рекомендації для кожного розміру
set divide=1073741824&&set size=gigabytes
if %space% lss 1073741824 set divide=1048576&&set size=megabytes
if %space% lss 1048576 set divide=1024&&set size=kilobytes
if %space% lss 1024 set divide=1&&set size=bytes
Потім напишіть тимчасовий сценарій VBS, оскільки партія не може обробити математику
echo wsh.echo cdbl(%space%)/%divide% > %temp%\tmp.vbs
Запустіть його, захопіть результат і видаліть його
for /f %%a in ('cscript //nologo %temp%\tmp.vbs') do set space=%%a
del %temp%.\tmp.vbs
Потім наступні результати підрізають два знаки після коми
for /f "tokens=1,2 delims=." %%a in ("%space%") do (
set s1=%%a
set s2=%%b
)
if not "%s2%"=="" (set space=%s1%.%s2:~0,2%) else (set space=%s1%)
Ехо-результати
echo Drive has %space% %size% free.
[EDIT]
Для загального розміру ви можете використовувати обсяг списку дискових частин (змінити "%%a"=="T"
на "%%a"=="driveletterhere"
)
for /f "tokens=3,6,7 delims= " %%a in ('echo list volume ^| diskpart') do if "%%a"=="T" set size=%%b && set size2=%%c
і бонус, як ви могли це обчислити:
if [%size2%]==[TB] (
set isBigEnough=1
) else if [%size2%]==[GB] (
if %size% GTR 31 set isBigEnough=1
)
if not defined isBigEnough set isBigEnough=0