中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]CMD下如何获取某个分区的总容量
« [1] [2] »
作者:
标题: [已解决]CMD下如何获取某个分区的总容量 上一主题 | 下一主题
qzwqzw
银牌会员

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 16 楼』:  


@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
)


2008-11-24 16:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wangff
初级用户





积分 134
发帖 54
注册 2008-11-19
状态 离线
『第 17 楼』:  Re:13 楼


@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 ]

2008-11-24 17:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
chishingchan
银牌会员




积分 1282
发帖 538
注册 2002-11-2
状态 离线
『第 18 楼』:  



  Quote:
Originally posted by wangff at 2008-11-24 05:59 PM:
[code]@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值是错的,与计算器得出的结果不一样。

难道计算的长度有所限制?

2008-11-24 20:57
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 19 楼』:  Re 18楼

批处理里面没有除法,只有整除。



2008-11-24 20:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chishingchan
银牌会员




积分 1282
发帖 538
注册 2002-11-2
状态 离线
『第 20 楼』:  



  Quote:
Originally posted by qzwqzw at 2008-11-24 04:37 PM:
[code]
@echo off
if "%1"=="" echo 请输入驱动器盘符(不带冒号) & goto :eof
> part.scr  echo select volume %1
>> part.scr echo list partition
for  ...

首先谢谢!但结果难计算且不精确,或时MB,或时GB。

2008-11-24 21:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chishingchan
银牌会员




积分 1282
发帖 538
注册 2002-11-2
状态 离线
『第 21 楼』:  



  Quote:
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,结果也是错的!

  Quote:
4276965376
字节。
请按任意键继续. . .
1073741823 KB
请按任意键继续. . .



2008-11-24 21:10
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 22 楼』:  Re 21楼


@echo off
set /a d=1^<^<31,x="~d"
echo cmd所能处理的最小数值为 %d%
echo cmd所能处理的最大数值为  %x%




2008-11-24 22:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复
chishingchan
银牌会员




积分 1282
发帖 538
注册 2002-11-2
状态 离线
『第 23 楼』:  



  Quote:
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

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

2008-11-25 04:30
查看资料  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: