中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-15 15:23
47,813 主题排行 / 349,903 发帖 / 今日 1 篇 / 48,257 会员排行
DOS疑难解答 & 问题讨论 (解答室) » 如何在纯dos下用批处理显示分区的已用空间和剩余空间?
可打印版本  3,251 / 18
第1楼 sanxiao88 发表于 2008-11-05 20:44
初级用户 发帖 14 积分 37
如何在纯dos下用批处理显示分区的已用空间和剩余空间?

如何在纯dos下,即在纯dos7.1或dos6.22下,而不是在XP的dos窗口,用批处理显示分区剩余空间和已用空间?包括FAT32分区和NTFS分区。哪位大虾、高人可以做到?

我知道在XP的dos下,可以这样:

@echo off
cls
setlocal EnableDelayedExpansion
echo.
echo.
echo ╔══════════════════════════════╗
echo ║ 磁盘分区 磁盘卷标名 剩余空间(MB) ║
echo ║ _____________________________________________________ ║
for %%d 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 %%d:\nul (
for /f "tokens=3" %%z in ('dir /-c %%d:\') do set freesize=%%z
set /a freesize=!freesize:~0,-3!/1049>nul
set freesize= !freesize!
set freesize=!freesize:~-9!
for /f "tokens=3*" %%v in ('vol %%d:') do set volume=%%w
set volume= !volume!
set volume=!volume:~-20!
echo ║ %%d: !volume! !freesize! ║
)
)
echo ╚══════════════════════════════╝
pause>nul


[ Last edited by sanxiao88 on 2008-11-5 at 20:55 ]
第2楼 lianjiang2004 发表于 2008-11-05 21:22
金牌会员 发帖 1,884 积分 3,946
dos下的没那么简单,只能去找一些有此功能的一键工具,看里面的脚本。
99%没人专门为你写脚本的。
第3楼 DOSforever 发表于 2008-11-05 22:25
金牌会员 发帖 2,239 积分 4,639
用关键词“剩余空间”在本版块搜索一下,一定有答案。
第4楼 HAT 发表于 2008-11-06 04:21
版主 发帖 5,017 积分 9,023
第5楼 sanxiao88 发表于 2008-11-06 20:52
初级用户 发帖 14 积分 37
4楼版主的链接我看了,不行啊!谁有GET.EXE?
4楼版主的链接我看了,不行啊!不过,也要谢谢你们了!
另外,谁有GET.EXE小程序,让我试试这样:

get k c:
strings free=div %get%,1024



[ Last edited by sanxiao88 on 2008-11-6 at 20:53 ]
第6楼 HAT 发表于 2008-11-07 09:52
版主 发帖 5,017 积分 9,023
"不行啊"是咋个表现形式呢?
第7楼 jh1688 发表于 2008-11-07 18:01
中级用户 发帖 126 积分 248
@echo off
:mini_BEGIN
if exist mini_dd.txt del mini_dd.txt
minito /nohp /p /ifs>mini_dd.txt
strings lines=LINESIZE mini_dd.txt
if %lines%#==0# goto fail
strings lines=add %lines%,1
set line=1
echo 硬盘信息:
:mini
strings line=add %line%,1
if %line%#==%lines%# goto mini_1
strings lined=read mini_dd.txt,%line%
strings row1=left %lined%,3
strings row3=mid %lined%,8,2
strings row5=mid %lined%,19,3
strings row7=right %lined%,7
if %row5%#==YES# set actp=%row1%
set lastp=%row1%
set lastd=%row3%
set lastk=%row7%
if not %lined%#==# echo %lined%
goto mini

:mini_1
echo.
echo 请根据上面显示的硬盘信息确认识别结果。
echo.
echo 自动识别结果:
echo 活动分区是:%actp%
echo 最后分区是:%lastp%
echo 最后分区对应的盘符是:%lastd%
echo 最后分区可用空间是:%lastk%Mb
echo.
if exist mini_dd.txt del mini_dd.txt
goto exit

:fail
cls
echo.
echo 很抱歉,本工具采用的软件未能获得有效硬盘信息。
echo.
if exist mini_dd.txt del mini_dd.txt
:exit

理面用到的DOS第三方工具在本坛可以找到,麻烦楼主自己搜一下啦……
第8楼 lianjiang2004 发表于 2008-11-07 18:17
金牌会员 发帖 1,884 积分 3,946
Originally posted by jh1688 at 2008-11-7 18:01:
@echo off
:mini_BEGIN
if exist mini_dd.txt del mini_dd.txt
minito /nohp /p /ifs>mini_dd.txt
strings lines=LINESIZE mini_dd.txt
if %lines%#==0# goto fail
strings lines=add %lines%,1
set li ...


此法不能处理ntfs分区的剩余空间。
第9楼 jx1988020488 发表于 2008-11-08 20:26
新手上路 发帖 4 积分 8
显示剩余空间

for %%a in (c: d: e: f:) do (
for /f "tokens=3" %%b in ('dir %%a^|find "可用字节"') do echo %%b 字节>>123.txt
)
第10楼 lianjiang2004 发表于 2008-11-09 11:49
金牌会员 发帖 1,884 积分 3,946
Originally posted by jx1988020488 at 2008-11-8 20:26:
显示剩余空间

for %%a in (c: d: e: f:) do (
for /f "tokens=3" %%b in ('dir %%a^|find "可用字节"') do echo %%b 字节>>123.txt
)


纯dos下能运行吗?呵呵。
看清楚楼主要求。
cmd下的楼主已经有了。
第11楼 lianjiang2004 发表于 2008-11-09 16:58
金牌会员 发帖 1,884 积分 3,946
pqdi(PowerQuest Drive Image)有此功能,只是个头大了些。
自己稍微处理一下即可。


第12楼 sanxiao88 发表于 2008-11-15 13:27
初级用户 发帖 14 积分 37
请大家读懂我的要求再回答,也谢谢各位的热心哦

也许我没有表达清楚,目前为止,还没有很合适的答案,在此,我再详细表述我的要求,希望高人指点,也希望更多的人参与讨论,哪怕抛砖引玉也可以。谢谢!题目要求是:
1.在纯dos下,即用DOS7.1或dos6.22启动盘引导后,A:\>,而不是在XP或win2000的cmd窗口执行
2.用批处理包括借助其它第3方小工具软件得到各个分区(包括FAT32分区和NTFS分区)的剩余空间和已用空间的数值?包括FAT32分区和NTFS分区。cmd下的我已经有很多了。


E:\DOWNLOAD\网络下载\0.jpg
第13楼 youkaib 发表于 2008-11-16 13:20
初级用户 发帖 22 积分 61
加个外部命令即可。具体这样写。
@echo off
echo 请在列出驱动器:
fsutil fsinfo drives
echo 是否查询驱动器空间
set /p a=(y/n):
if "%a%"=="n" exit
echo 正在列出驱动器的磁盘空间:
for %%i in (c: d: e: f: g: h: i: j: k:) do (
echo %%i 使用是:
fsutil volume diskfree %%i
echo.
)
echo 操作完成!
echo 欢迎您加入QQ74487678群。许多高手期待着您的加入。
pause >nul
这个更明确一点,比用你的dir方便多了。不过有个缺陷,就是遇到未知设备会报错。这个需要将前面再扩充几条语句。
第14楼 lianjiang2004 发表于 2008-11-16 16:11
金牌会员 发帖 1,884 积分 3,946
Originally posted by youkaib at 2008-11-16 13:20:
加个外部命令即可。具体这样写。
@echo off
echo 请在列出驱动器:
fsutil fsinfo drives
echo 是否查询驱动器空间
set /p a=(y/n):
if "%a%"=="n" ...

看看别人的要求吧,此类脚本手里已有多种了。呵呵。

难道真是不明白什么是dos?

1.在纯dos下,即用DOS7.1或dos6.22启动盘引导后,A:\>,而不是在XP或win2000的cmd窗口执行;
2.用批处理包括借助其它第3方小工具软件得到各个分区(包括FAT32分区和NTFS分区)的剩余空间和已用空间的数值?包括FAT32分区和NTFS分区。cmd下的我已经有很多了。
第15楼 lianjiang2004 发表于 2008-11-16 16:13
金牌会员 发帖 1,884 积分 3,946
11楼推荐的pqdi,是一个能满足要求的工具,看来你还看不上,呵呵。
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023