我有一个批处理脚本,我需要确保至少有3 GB的可用空间。
要通过命令行获取可用空间,请键入:
fsutil volume diskfree C: | find /i "avail free"
Total # of avail free bytes : 872762081280
这是字节数,当您右键单击' - >时,也会显示相同的字节数。你的C盘上的'财产'。
然而,当我'右键'' - >在我的C盘上的'property',在872,762,081,280旁边,它显示了GB值仅为812GB的可用空间。这与872762081280的字节值完全不同。
我认为这可能是由于1024bytes = 1kb的Windows转换造成的。但是,这个转换将显示我有852,306,720kb可用(或852GB)仍然不接近'Local Disk(C :) Properties'窗口向我显示的812GB。
有没有人知道哪个窗口正在使用哪个数字将872,762,081,280字节转换为812GB?
答案 0 :(得分:6)
KB中有1024个字节,MB中为1024 KB,GB中为1024 MB:
872762081280 bytes 1 KB 1 MB 1 GB
x ------- x ------ x ----- = 812 GB
1024 bytes 1024 KB 1024 MB
请注意,KB,MB和GB的使用遵循JEDEC内存标准命名法
根据IEC 60027表示法,这些将由KiB,MiB和GiB表示
由于它们都使用1024的倍数,因此存在很多混淆,但是Decimal命名法使用相同的KB,MB和GB但是使用1000的倍数,如某些磁盘制造商所使用的那样
答案 1 :(得分:5)
872762081280 / 1024 / 1024 / 1024 = 812
答案 2 :(得分:3)
您可以通过这种方式获得GB中的可用空间数量:
for /F "tokens=2 delims=:" %%a in ('fsutil volume diskfree C: ^| find /i "avail free"') do set bytes=%%a
set /A GB=%bytes:~0,-3%/1024*1000/1024/1024
echo GB=%GB%
答案 3 :(得分:1)
最简单的方法是记住KB,MB和GB基于2的幂。
1 KB = 2^10 (2 to the 10th power or 1,024 bytes)
1 MB = 2^20 (2 to the 20th power or 1,048,576 bytes)
1 GB = 2^30 (2 to the 30th power or 1,073,741,824 bytes)
您需要做的就是将您的大号除以2 ^ 30以获得GB的数量。
Your value: 872,762,081,280 bytes
KB............ MB.......... GB.........
852306720.0 832330.8 812.823
答案 4 :(得分:0)
@echo off
setlocal
set drive=C
set free=?
rem Note: WMIC will output unicode text
wmic logicaldisk where (caption = "%drive%:") get freespace>"%temp%\free.tmp"
for /f %%A in ('type "%temp%\free.tmp"') do (set free=%%A)
SET free=%free:~0,7%
SET /a "free=(((free/1024)*1000)/1024*100)/1024"
::SET free=%free:~7,5%
echo Free space: %free% Gb
rem if exist "%temp%\free.tmp" del "%temp%\free.tmp"
pause