Board logo

标题: 如何在纯dos下用批处理显示分区的已用空间和剩余空间? [打印本页]

作者: sanxiao88     时间: 2008-11-5 20:44    标题: 如何在纯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 ]
作者: lianjiang2004     时间: 2008-11-5 21:22
dos下的没那么简单,只能去找一些有此功能的一键工具,看里面的脚本。
99%没人专门为你写脚本的。
作者: DOSforever     时间: 2008-11-5 22:25
用关键词“剩余空间”在本版块搜索一下,一定有答案。
作者: HAT     时间: 2008-11-6 04:21
http://www.cn-dos.net/forum/viewthread.php?tid=15017
作者: sanxiao88     时间: 2008-11-6 20:52    标题: 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 ]
作者: HAT     时间: 2008-11-7 09:52
"不行啊"是咋个表现形式呢?
作者: jh1688     时间: 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 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第三方工具在本坛可以找到,麻烦楼主自己搜一下啦……
作者: lianjiang2004     时间: 2008-11-7 18:17


  Quote:
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分区的剩余空间。
作者: jx1988020488     时间: 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
)
作者: lianjiang2004     时间: 2008-11-9 11:49


  Quote:
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下的楼主已经有了。
作者: lianjiang2004     时间: 2008-11-9 16:58
pqdi(PowerQuest Drive Image)有此功能,只是个头大了些。
自己稍微处理一下即可。



作者: sanxiao88     时间: 2008-11-15 13:27    标题: 请大家读懂我的要求再回答,也谢谢各位的热心哦


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



作者: youkaib     时间: 2008-11-16 13:20
加个外部命令即可。具体这样写。
@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方便多了。不过有个缺陷,就是遇到未知设备会报错。这个需要将前面再扩充几条语句。
作者: lianjiang2004     时间: 2008-11-16 16:11


  Quote:
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下的我已经有很多了。

作者: lianjiang2004     时间: 2008-11-16 16:13
11楼推荐的pqdi,是一个能满足要求的工具,看来你还看不上,呵呵。
作者: youkaib     时间: 2008-11-16 16:59


  Quote:
Originally posted by lianjiang2004 at 2008-11-16 16:11:

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

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

1.在纯dos下,即用DOS7.1或dos6.22启动盘引导后,A:\>, ...

你认为纯dos做的到吗?
  如果没有外部命令,这些dos根本做到不到。
作者: lianjiang2004     时间: 2008-11-16 17:16


  Quote:
Originally posted by youkaib at 2008-11-16 16:59:

你认为纯dos做的到吗?
  如果没有外部命令,这些dos根本做到不到。

没有说不能用外部命令,或第三方软件。
而是要求运行环境是dos,而不是cmd,明白了吗?
你那些东西能在dos下运行吗?
作者: lianjiang2004     时间: 2008-11-16 21:16
也可以用psi获取你要的结果。至于具体使用方法,自行查帖子。

下图分别是未加载ntfs,和加载ntfs驱动后的结果。




作者: DOSforever     时间: 2008-11-16 21:59


  Quote:
Originally posted by youkaib at 2008-11-16 16:59:



你认为纯dos做的到吗?
  如果没有外部命令,这些dos根本做到不到。

DOS 的外部命令不算 DOS 算什么,难道算 Windows ?