中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-06-23 03:39
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » 如何在纯dos下用批处理显示分区的已用空间和剩余空间? 查看 2,990 回复 18
楼 主 如何在纯dos下用批处理显示分区的已用空间和剩余空间? 发表于 2008-11-05 20:44 ·  中国 陕西 西安 电信
初级用户
积分 37
发帖 14
注册 2008-02-17 16:00
18年会员
UID 110839
性别 男
状态 离线

如何在纯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 发表于 2008-11-05 21:22 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
dos下的没那么简单,只能去找一些有此功能的一键工具,看里面的脚本。
99%没人专门为你写脚本的。
Windows 一键还原
http://www.yjhy.com
3 发表于 2008-11-05 22:25 ·  中国 上海 虹口区 电信
金牌会员
★★★★
积分 4,639
发帖 2,239
注册 2005-01-30 00:00
21年会员
UID 35785
性别 男
状态 离线
用关键词“剩余空间”在本版块搜索一下,一定有答案。
4 发表于 2008-11-06 04:21 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
5 4楼版主的链接我看了,不行啊!谁有GET.EXE? 发表于 2008-11-06 20:52 ·  中国 陕西 西安 电信
初级用户
积分 37
发帖 14
注册 2008-02-17 16:00
18年会员
UID 110839
性别 男
状态 离线
4楼版主的链接我看了,不行啊!不过,也要谢谢你们了!
另外,谁有GET.EXE小程序,让我试试这样:

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



[ Last edited by sanxiao88 on 2008-11-6 at 20:53 ]
6 发表于 2008-11-07 09:52 ·  美国 惠普HP
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
"不行啊"是咋个表现形式呢?
7 发表于 2008-11-07 18:01 ·  中国 上海 虹口区 电信
中级用户
★★
积分 248
发帖 126
注册 2008-05-30 17:18
18年会员
UID 120118
性别 男
状态 离线
@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 发表于 2008-11-07 18:17 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
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分区的剩余空间。
Windows 一键还原
http://www.yjhy.com
9 发表于 2008-11-08 20:26 ·  中国 江西 南昌 电信
新手上路
积分 8
发帖 4
注册 2008-10-04 22:35
17年会员
UID 127443
性别 男
状态 离线
显示剩余空间

for %%a in (c: d: e: f:) do (
for /f "tokens=3" %%b in ('dir %%a^|find "可用字节"') do echo %%b 字节>>123.txt
)
10 发表于 2008-11-09 11:49 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
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下的楼主已经有了。
Windows 一键还原
http://www.yjhy.com
11 发表于 2008-11-09 16:58 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
pqdi(PowerQuest Drive Image)有此功能,只是个头大了些。
自己稍微处理一下即可。


Windows 一键还原
http://www.yjhy.com
12 请大家读懂我的要求再回答,也谢谢各位的热心哦 发表于 2008-11-15 13:27 ·  中国 陕西 西安 电信
初级用户
积分 37
发帖 14
注册 2008-02-17 16:00
18年会员
UID 110839
性别 男
状态 离线

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


E:\DOWNLOAD\网络下载\0.jpg
13 发表于 2008-11-16 13:20 ·  中国 江西 南昌 电信
初级用户
积分 61
发帖 22
注册 2008-10-19 17:15
17年会员
UID 128768
性别 男
状态 离线
加个外部命令即可。具体这样写。
@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 发表于 2008-11-16 16:11 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
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下的我已经有很多了。
Windows 一键还原
http://www.yjhy.com
15 发表于 2008-11-16 16:13 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
11楼推荐的pqdi,是一个能满足要求的工具,看来你还看不上,呵呵。
Windows 一键还原
http://www.yjhy.com
论坛跳转: