中国DOS联盟

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

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

中国DOS联盟论坛
现在时间是 2026-08-11 09:50
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求一P处理,取得硬盘剩余容量大小。 查看 859 回复 8
楼 主 求一P处理,取得硬盘剩余容量大小。 发表于 2009-02-23 17:03 ·  中国 广西 北海 电信
新手上路
积分 17
发帖 9
注册 2008-04-03 23:09
18年会员
UID 114905
性别 男
状态 离线
求一P处理,取得硬盘剩余容量大小。


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


谢谢高手!
2 【转】网络上的查看剩余磁盘空间的代码。 发表于 2009-02-23 17:35 ·  美国 华盛顿州 金 雷德蒙德 Microsoft
初级用户
★★
积分 100
发帖 93
注册 2009-01-14 15:04
17年会员
UID 136661
性别 男
来自 湖南
状态 离线
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
3 发表于 2009-02-23 17:49 ·  中国 广西 北海 电信
新手上路
积分 17
发帖 9
注册 2008-04-03 23:09
18年会员
UID 114905
性别 男
状态 离线
你上面这个试过了不行,


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

@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
4 发表于 2009-02-23 18:01 ·  美国 华盛顿州 金 雷德蒙德 Microsoft
初级用户
★★
积分 100
发帖 93
注册 2009-01-14 15:04
17年会员
UID 136661
性别 男
来自 湖南
状态 离线
你是考虑删除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 /?
5 发表于 2009-02-23 18:04 ·  中国 安徽 马鞍山 联通
金牌会员
★★★★
积分 3,946
发帖 1,884
注册 2006-01-20 13:00
20年会员
UID 49283
性别 男
状态 离线
意图不明,呵呵。

Windows 一键还原
http://www.yjhy.com
6 发表于 2009-02-23 19:37 ·  中国 广西 百色 中移铁通
银牌会员
★★★
永远的菜鸟
积分 1,335
发帖 574
注册 2007-11-27 12:50
18年会员
UID 103929
性别 男
来自 广西
状态 离线
如果只是判断一个分区,用下面的代码应该可以,如果要判断整个硬盘,请自行修改...
@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
7 发表于 2009-02-23 20:08 ·  中国 四川 南充 电信
超级版主
★★★★
我爱DOS
积分 5,310
发帖 2,044
注册 2005-09-26 12:00
20年会员
UID 42843
性别 男
来自 四川南充
状态 离线
请自行修改 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
8 发表于 2009-02-23 23:16 ·  中国 广西 北海 电信
新手上路
积分 17
发帖 9
注册 2008-04-03 23:09
18年会员
UID 114905
性别 男
状态 离线
太感谢版主了。谢谢
9 发表于 2009-02-23 23:24 ·  中国 广西 北海 电信
新手上路
积分 17
发帖 9
注册 2008-04-03 23:09
18年会员
UID 114905
性别 男
状态 离线
Originally posted by 不得不爱 at 2009-2-23 08:08 PM:
请自行修改 disk 变量为你需要检测的盘符,把 echo 语句行替换为你想要执行的命令就可以了!
@echo off&color b
set disk=E
for /f %%a in ('wmic logicaldisk wh ...



在PE下运行无效,
能不能给个可以在PE下运行的?
论坛跳转: