中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求一P处理,取得硬盘剩余容量大小。
作者:
标题: 求一P处理,取得硬盘剩余容量大小。 上一主题 | 下一主题
binjie
新手上路





积分 17
发帖 9
注册 2008-4-3
状态 离线
『楼 主』:  求一P处理,取得硬盘剩余容量大小。

求一P处理,取得硬盘剩余容量大小。


先取得A盘容量大小,当小于20M则执行del命令,大于20M则跳过执行del


谢谢高手!

2009-2-23 17:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhengqian529
初级用户





积分 100
发帖 93
注册 2009-1-14
来自 湖南
状态 离线
『第 2 楼』:  【转】网络上的查看剩余磁盘空间的代码。

del 是删除文件命令,rd是删除文件夹命令。 你这个题目我不敢尝试。不过我有一个网络上转来的的代码,可以查看机器磁盘的剩余空间
@echo off
setlocal enabledelayedexpansion

:Main
cls
set /a num2=1024*1024
FOR %%i 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 %%i:\ (
        SET num3_str=
        SET num4=
        MD %%i:\test
        FOR /f "tokens=3" %%j in ('dir /-c %%i:\') DO set num1=%%j
            IF NOT "!num1!"=="0" (
                call :Loop
                FOR /f "delims=0 tokens=*" %%k IN ("!num3_str!") DO set num3_str=%%k
                echo The rest disksize of the prartition %%i is !num3_str! MB
                echo.
           )
        RD %%i:\test
    )
)
pause


:Loop
REM division
REM
SET /a num3=%num4%%num1:~0,1%/%num2%

REM The return value
REM
SET num3_str=%num3_str%%num3%

REM arithmetical compliment
REM
SET /a num4=%num4%%num1:~0,1%%%%num2%
IF %num4% EQU 0 SET num4=

REM Set num1
REM
SET num1=%num1:~1%
IF NOT "%num1%"=="" GOTO Loop
GOTO :EOF


2009-2-23 17:35
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (250988158)  编辑帖子  回复  引用回复
binjie
新手上路





积分 17
发帖 9
注册 2008-4-3
状态 离线
『第 3 楼』:  

你上面这个试过了不行,


这个可以,但不懂怎样加入判断大小后执行命令。

@echo off&color b
set disk=x
for /f %%a in ('wmic logicaldisk where "caption='%disk%:'" get FreeSpace /value 2^>nul') do set %%a
    if %FreeSpace% LSS 1024 set/a FreeSpace=(FreeSpace*1000)/1024&echo.&echo.&echo.&echo.                     %disk% 盘可用空间为 !Free! KB&pause>nul&goto :eof
    set mn=MB
    call :lp 1048576
    set mn=GB
    set/a modr=0
    set FreeSpace=%t%
    set t=0
    call :lp 1024
    goto :eof
:lp
    set Free=%FreeSpace:~0,1%
    set/a mod=modr*10+Free
    set/a r=mod/%1
    set t=%t%%r%
    if "%t%"=="0" set t=
    set/a modr=mod%%%1
    set FreeSpace=%FreeSpace:~1%
    if defined FreeSpace goto lp
    set/a w=0
    if %t% gtr 1024 goto :eof
    set t=%t%.
    set n=2
:loop
    set /a modr*=10,r=modr/%1,w+=1
    if %w% geq %n% set/a modr=modr%%%1*10/%1 && goto lpok
    set t=%t%%r%
    set/a modr=modr%%%1
goto loop
:lpok
cls
for /f "delims=0 tokens=*" %%i in ("%t%%r% %mn%") do set t=%%i
echo.&echo.&echo.                      %disk% 盘可用空间为: %t%&echo.&pause&exit

2009-2-23 17:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zhengqian529
初级用户





积分 100
发帖 93
注册 2009-1-14
来自 湖南
状态 离线
『第 4 楼』:  

你是考虑删除A盘所有文件还是只是删除文件?
1. 判断大小, 你看你的程序里面的最后一行:%t% 它记录盘的大小,你可以使用if语句.把20M 化为与%t%同样的单位,比如Mb,kb,byte。
2. 删除文件,比较之后执行 del 或者 rd 命令如:
if %t% lss 20 del /s %disk%:\ (单位为MB,删除这个盘下的所有文件,如果你是想删除底下的所有文件,可以使用rd /s %disk%:\)
3. 如果你的意图是格式化整个磁盘,使用format命令是再好不过的啦。最好看下format的帮助: format /?

2009-2-23 18:01
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (250988158)  编辑帖子  回复  引用回复
lianjiang2004
金牌会员





积分 3946
发帖 1884
注册 2006-1-20
状态 离线
『第 5 楼』:  

意图不明,呵呵。





Windows 一键还原
http://www.yjhy.com
2009-2-23 18:04
查看资料  发短消息 网志   编辑帖子  回复  引用回复
moniuming
银牌会员

永远的菜鸟



积分 1335
发帖 574
注册 2007-11-27
来自 广西
状态 离线
『第 6 楼』:  

如果只是判断一个分区,用下面的代码应该可以,如果要判断整个硬盘,请自行修改...
@echo off
set disk=d:
for /f "tokens=2 delims==" %%a in ('wmic logicaldisk where "caption='%disk%'" get FreeSpace /value') do (
  set "sth=%%a"
)
set "sth=%sth:~,-7%"
echo %sth%
if %sth% lss 20 (
  echo del something%如果显示符合要求,请把这行修改为删除的代码%
) else (
  echo 磁盘容量已经足够了
)
echo.&pause


2009-2-23 19:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 7 楼』:  

请自行修改 disk 变量为你需要检测的盘符,把 echo 语句行替换为你想要执行的命令就可以了!
@echo off&color b
set disk=E
for /f %%a in ('wmic logicaldisk where "caption='%disk%:'" get FreeSpace /value 2^>nul') do SET %%a>nul
set free=%FreeSpace:~-10%
if not %FreeSpace:~0,-10%.==. goto 大于
:去首0
if %free:~0,1%==0 set free=%free:~1%&goto 去首0
if %free% gtr 20971520 goto 大于
:小于
echo %disk%盘小于20M
pause
goto :eof
:大于
echo %disk%盘大于20M
pause




我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2009-2-23 20:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
binjie
新手上路





积分 17
发帖 9
注册 2008-4-3
状态 离线
『第 8 楼』:  

太感谢版主了。谢谢

2009-2-23 23:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
binjie
新手上路





积分 17
发帖 9
注册 2008-4-3
状态 离线
『第 9 楼』:  



  Quote:
Originally posted by 不得不爱 at 2009-2-23 08:08 PM:
请自行修改 disk 变量为你需要检测的盘符,把 echo 语句行替换为你想要执行的命令就可以了!
[code]@echo off&color b
set disk=E
for /f %%a in ('wmic logicaldisk wh ...

在PE下运行无效,
能不能给个可以在PE下运行的?

2009-2-23 23:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: