|
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 |
|
|
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 |
|
|
lianjiang2004
金牌会员
积分 3946
发帖 1884
注册 2006-1-20
状态 离线
|
|
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
状态 离线
|
|
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 |
|