中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-20 10:08
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]CMD下如何获取某个分区的总容量 查看 1,897 回复 22
16 发表于 2008-11-24 16:37 ·  中国 山西 电信
银牌会员
★★★
天的白色影子
积分 2,343
发帖 636
注册 2004-03-06 00:00
22年会员
UID 19350
性别 男
状态 离线

@echo off
if "%1"=="" echo 请输入驱动器盘符(不带冒号) & goto :eof
> part.scr echo select volume %1
>> part.scr echo list partition
for /f "tokens=5,6" %%i in ('diskpart /s part.scr ^| find "*"') do (
echo 驱动器%1总容量为:%%i %%j
)
17 Re:13 楼 发表于 2008-11-24 17:59 ·  中国 福建 泉州 移动
初级用户
★★
积分 134
发帖 54
注册 2008-11-19 11:47
17年会员
UID 131429
性别 男
状态 离线
@echo off

for /f "tokens=2,3" %%a in ('chkdsk %1^|find "总"') do (
set aa=%%a
set bb=%%b
)
set aa=%aa:,=%
if not "%bb%"=="KB" (
set/a aa/=1024
set bb=KB
)
set aa=%aa% %bb%
echo %aa%


这样结果匀为KB

[ Last edited by wangff on 2008-11-24 at 18:02 ]
18 发表于 2008-11-24 20:57 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,282
发帖 538
注册 2002-11-02 00:00
23年会员
UID 129
性别 男
状态 离线
Originally posted by wangff at 2008-11-24 05:59 PM:
@echo off

for /f "tokens=2,3" %%a in ('chkdsk %1^|find "总"') do (
set aa=%%a
set bb=%%b
)
set aa=%aa:,=%
if not "%bb%"=="KB" (
set ...



批处理看起来是对的,但是KB值是错的,与计算器得出的结果不一样。

难道计算的长度有所限制?
19 Re 18楼 发表于 2008-11-24 20:59 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
批处理里面没有除法,只有整除。
20 发表于 2008-11-24 21:04 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,282
发帖 538
注册 2002-11-02 00:00
23年会员
UID 129
性别 男
状态 离线
Originally posted by qzwqzw at 2008-11-24 04:37 PM:

@echo off
if "%1"=="" echo 请输入驱动器盘符(不带冒号) & goto :eof
> part.scr echo select volume %1
>> part.scr echo list partition
for ...


首先谢谢!但结果难计算且不精确,或时MB,或时GB。
21 发表于 2008-11-24 21:10 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,282
发帖 538
注册 2002-11-02 00:00
23年会员
UID 129
性别 男
状态 离线
Originally posted by HAT at 2008-11-24 08:59 PM:
批处理里面没有除法,只有整除。


@echo off

for /f "tokens=2,3" %%a in ('chkdsk C:^|find "总"') do (
set size=%%a
set unit=%%b
)

set size=%size:,=%
echo %size%
echo %unit%
pause

if not %unit%*==KB* set /a size=size/2

echo %size% KB
pause


我只除以2,结果也是错的!

4276965376
字节。
请按任意键继续. . .
1073741823 KB
请按任意键继续. . .
22 Re 21楼 发表于 2008-11-24 22:47 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
set /a d=1^<^<31,x="~d"
echo cmd所能处理的最小数值为 %d%
echo cmd所能处理的最大数值为 %x%
23 发表于 2008-11-25 04:30 ·  中国 广东 东莞 电信
银牌会员
★★★
积分 1,282
发帖 538
注册 2002-11-02 00:00
23年会员
UID 129
性别 男
状态 离线
Originally posted by HAT at 2008-11-24 10:47 PM:
@echo off
set /a d=1^<^<31,x="~d"
echo cmd所能处理的最小数值为 %d%
echo cmd所能处理的最大数值为 %x%
pause


怪不得,数值已超过了,不过没关系,对比大小不存在错误。
论坛跳转: