![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-25 23:20 |
共 47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]如何显示磁盘的剩余空间? |
| 可打印版本 20,773 / 46 |
| 第16楼 namejm | 发表于 2006-04-14 13:02 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by bagpipe at 2006-3-29 11:12: 能不能说一下你用什么方法实现的,我正好需要在2000下测试个批处理.谢谢. [ Last edited by namejm on 2006-4-15 at 14:31 ] |
|
| 第17楼 smileseeker | 发表于 2006-04-14 17:15 |
| 中级用户 发帖 83 积分 316 | |
|
for /f "tokens=3" %%a in ('"dir /-c c:\ | find "可用字节""') do set freesize=%%a
这个 方法很好啊 |
|
| 第18楼 chenhui530 | 发表于 2006-04-15 21:41 |
| 高级用户 发帖 273 积分 772 | |
|
直接调用VBS应该简单的多
|
|
| 第19楼 3742668 | 发表于 2006-04-17 01:00 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
其实应该是bat比vbs简单得多。
|
|
| 第20楼 namejm | 发表于 2006-04-17 18:17 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by 3742668 at 2006-4-17 01:00: 那如果想查询所有存在的磁盘分区的剩余空间大小,要求用MB为单位,不借助第三方软件,该如何写代码呢? 在2000下能实现这个功能吗? |
|
| 第21楼 namejm | 发表于 2006-04-21 19:43 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
在XP环境下,想查询每个分区的剩余空间,以MB为单位显示,以下代码为什么不能得出正确结果呢?
for %%a in (c d e f g h i j k l m n o p q r s t u v w x y z) do @( if exist %%a:\nul ( for /f "tokens=3" %%b in ('dir /-c %%a:\^|find "可用字节"') do set freesize=%%b set /a freesize=%freesize:~0,-3%/1049>nul echo %% a 盘剩余空间:%freesize% MB ) |
|
| 第22楼 3742668 | 发表于 2006-04-21 22:44 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
估计是因为你没有启用延迟环境变量的缘故,导致freesize的值以为未变。建议用SETLOCAL ENABLEDELAYEDEXPANSION来启用延迟环境变量,另外需用!freesize!来替代%freesize%。不过既然是XP,何必考虑一个命令搞定呢?
|
|
| 第23楼 namejm | 发表于 2006-04-22 13:03 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by 3742668 at 2006-4-21 22:44: 因为想显示所有存在的分区的剩余空间,并且要以MB为单位显示,所以要用到for语句,对SETLOCAL ENABLEDELAYEDEXPANSION的使用不是很了解,具体要修改什么地方,能不能在我贴出来的代码基础上进行修改呢?谢谢. |
|
| 第24楼 3742668 | 发表于 2006-04-22 13:32 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
刚才看了一下,你的代码明显差个),所以首先应该在最后加个)
其次,echo %% a 中间多了个空格。 再次,算法有问题,结果可能出现错误。 最后,SETLOCAL ENABLEDELAYEDEXPANSION的用法: 如果想得到精确的以mb为单位的空间数也不是没有办法,只要把除法改成减法自己写代码分两部分算就行了,当然,没什么实用性。 其实利用wmic可以保存各个盘的剩余空间数,然后自己再通过运算来获得mb数应该简单一些。 |
|
| 第25楼 chineselgs | 发表于 2006-04-22 13:44 |
| 高级用户 发帖 266 积分 613 来自 河南省 | |
|
看不太懂~~~~~~~~~~
|
|
| 第26楼 namejm | 发表于 2006-04-22 17:16 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
to 3742668:
感谢你的耐心回答,解决了一个困扰我很久的难题,再次感谢. "如果想得到精确的以mb为单位的空间数也不是没有办法,只要把除法改成减法自己写代码分两部分算就行了" ----呵呵,想不到还有这样的写法,批处理真是太有趣了,能不能贴段代码出来开开眼界呢? "当然,没什么实用性。" ----你是说分成两段代码的做法没实用性还是说以MB为单位显示没实用性呢?如果是后者的话,我可不太同意你的说法. "其实利用wmic可以保存各个盘的剩余空间数,然后自己再通过运算来获得mb数应该简单一些。" ----这样做会产生临时文件吗?如果要产生临时文件的话,感觉还不是很完美. [ Last edited by namejm on 2006-4-22 at 17:42 ] |
|
| 第27楼 3742668 | 发表于 2006-04-22 18:40 |
| 荣誉版主 发帖 718 积分 2,013 | |
|
1.算起来比较麻烦,把思路说一下你自己尝试了看吧:
其实就是按照手算除法一样,不过分成两部分,先用前7位与1048576计算,然后把减剩下的加前7位以外的组合了再与1048576计算,最后把两部分的结果合并起来就行了。 2,之所以说没有什么实用性,因为考虑到执行速度以及繁琐程度,不如改用其它的方法。 3,我想你没有仔细去看那个wmic结果的批处理,你仔细再看看结果是保存在变量中还是保存在文件中。。 |
|
| 第28楼 namejm | 发表于 2006-04-22 22:34 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
Originally posted by 3742668 at 2006-4-22 18:40: 呵呵,不是我没看,是我对wmic很陌生,看不懂:( 还是谢谢你的解答. |
|
| 第29楼 namejm | 发表于 2006-04-22 22:47 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
在2000系统环境中,for /f "tokens=3" %%b in ('dir /-c %%a:\^|find "可用字节"') do set freesize=%%b这句始终不能得到正确结果,请问该如何修改代码?
|
|
| 第30楼 namejm | 发表于 2006-06-11 18:29 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
29楼的问题有人解答吗?很想知道该怎么处理。
|
|
| 上一页 1 2 3 4 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |