中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-09 00:21
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]如何用批处理获取U盘空间大小的一半? 查看 1,045 回复 14
楼 主 [求助]如何用批处理获取U盘空间大小的一半? 发表于 2008-05-11 21:58 ·  中国 天津 电信
初级用户
积分 41
发帖 15
注册 2008-05-07 15:08
18年会员
UID 118005
性别 男
状态 离线
各位好,现在我想获得U盘空间大小的一半,请问如何编写命令实现,希望大家帮忙指导
(注:不是剩余空间,是原始空间大小的一半)

[ Last edited by lxmxn on 2008-5-12 at 12:11 AM ]
2 发表于 2008-05-12 00:21 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
@echo off
for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DriveType='2'" get * /value ^| findstr /i "^size"') do set total=%%a
set /a half=total/2
echo U盘总容量: %total%
echo U盘总容量的一半: %half%
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
paidui598 +2 2008-05-12 09:50
3 发表于 2008-05-12 00:43 ·  中国 山东 青岛 联通
新手上路
积分 13
发帖 8
注册 2008-05-11 23:55
18年会员
UID 118451
性别 男
状态 离线
这个脚本实验如何
4 发表于 2008-05-12 00:49 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
XP SP2 EN
512MB U盘
测试通过
5 谢谢 发表于 2008-05-12 09:52 ·  中国 天津 联通
初级用户
积分 41
发帖 15
注册 2008-05-07 15:08
18年会员
UID 118005
性别 男
状态 离线
感谢HAT的帮忙
6 发表于 2008-05-12 09:56 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
21年会员
UID 44210
状态 离线
XP SP2 4GB U盘
U盘总容量: 4035407872
U盘总容量的一半: 1073741823
测试总容量正确,总容量的一半出错
7 求助 发表于 2008-05-12 10:10 ·  中国 天津 联通
初级用户
积分 41
发帖 15
注册 2008-05-07 15:08
18年会员
UID 118005
性别 男
状态 离线
求助HAT,如果想获得其它盘的空间大小,应该如何写呢
8 发表于 2008-05-12 12:45 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Originally posted by zh159 at 2008-5-12 09:56 AM:
XP SP2 4GB U盘
U盘总容量: 4035407872
U盘总容量的一半: 1073741823
测试总容量正确,总容量的一半出错

批处理能够直接的计算的数值上限是2^31
调用VBS计算一下就行了
zh159 兄再测试一下这个?

@echo off
for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DriveType='2'" get * /value ^| findstr /i "^size"') do set total=%%a
echo U盘总容量: %total%
>"%tmp%\cacl.vbs" echo a=%total%
>>"%tmp%\cacl.vbs" echo b=a/2
>>"%tmp%\cacl.vbs" echo wscript.echo b
for /f %%a in ('cscript /nologo "%tmp%\cacl.vbs"') do echo U盘总容量的一半: %%a
del /q "%tmp%\cacl.vbs"
9 发表于 2008-05-12 12:46 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Originally posted by paidui598 at 2008-5-12 10:10 AM:
求助HAT,如果想获得其它盘的空间大小,应该如何写呢

其它盘是指整个硬盘?还是硬盘的某个分区?还是两个或多个U盘中的某一个?还是移动硬盘?
10 发表于 2008-05-12 13:01 ·  中国 天津 联通
初级用户
积分 41
发帖 15
注册 2008-05-07 15:08
18年会员
UID 118005
性别 男
状态 离线
Originally posted by HAT at 2008-5-12 12:46 PM:

其它盘是指整个硬盘?还是硬盘的某个分区?还是两个或多个U盘中的某一个?还是移动硬盘?



是指硬盘的一个分区,比如求D盘空间大小的一半,再次感谢HAT
11 发表于 2008-05-12 15:36 ·  中国 广西 玉林 博白县 电信
金牌会员
★★★★
积分 3,687
发帖 1,467
注册 2005-08-08 12:00
21年会员
UID 44210
状态 离线
Originally posted by HAT at 2008-5-12 12:45:

批处理能够直接的计算的数值上限是2^31
调用VBS计算一下就行了
zh159 兄再测试一下这个?

@echo off
for /f "tokens=2 delims==" %%a in ('wmic Logi ...

VBS一句就够了:
@echo off
for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DriveType='2'" get * /value ^| findstr /i "^size"') do set total=%%a
echo U盘总容量: %total%
>"%tmp%\cacl.vbs" echo wscript.echo %total%/2
for /f %%a in ('cscript /nologo "%tmp%\cacl.vbs"') do echo U盘总容量的一半: %%a
del /q "%tmp%\cacl.vbs"
12 发表于 2008-05-12 20:37 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
Originally posted by paidui598 at 2008-5-12 01:01 PM:



是指硬盘的一个分区,比如求D盘空间大小的一半,再次感谢HAT

@echo off
for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DeviceID='D:'" get * /value ^| findstr /i "^size"') do set total=%%a
echo D盘总容量: %total%
>"%tmp%\cacl.vbs" echo wscript.echo %total%/2
for /f %%a in ('cscript /nologo "%tmp%\cacl.vbs"') do echo D盘总容量的一半: %%a
del /q "%tmp%\cacl.vbs"
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
paidui598 +2 2008-05-12 20:42
13 发表于 2008-05-12 20:43 ·  中国 天津 电信
初级用户
积分 41
发帖 15
注册 2008-05-07 15:08
18年会员
UID 118005
性别 男
状态 离线
Originally posted by HAT at 2008-5-12 08:37 PM:

@echo off
for /f "tokens=2 delims==" %%a in ('wmic LogicalDisk where "DeviceID='D:'" get * /value ^| findstr /i "^size"' do set total=%%a
echo D盘总容量 ...



感谢HAT高手的帮忙,
14 发表于 2008-05-13 20:56 ·  中国 天津 电信
初级用户
积分 41
发帖 15
注册 2008-05-07 15:08
18年会员
UID 118005
性别 男
状态 离线
还想问一下,如果想让上面代码在DOS6.22中运行应该如何改
15 发表于 2008-06-29 00:12 ·  中国 河南 郑州 巩义市 联通
新手上路
积分 18
发帖 9
注册 2005-10-20 23:43
20年会员
UID 43819
状态 离线
论坛跳转: