Board logo

标题: 求一P处理,取得硬盘剩余容量大小。 [打印本页]

作者: binjie     时间: 2009-2-23 17:03    标题: 求一P处理,取得硬盘剩余容量大小。

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


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


谢谢高手!
作者: zhengqian529     时间: 2009-2-23 17:35    标题: 【转】网络上的查看剩余磁盘空间的代码。

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

作者: binjie     时间: 2009-2-23 17:49
你上面这个试过了不行,


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

@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
作者: zhengqian529     时间: 2009-2-23 18:01
你是考虑删除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 /?
作者: lianjiang2004     时间: 2009-2-23 18:04
意图不明,呵呵。


作者: moniuming     时间: 2009-2-23 19:37
如果只是判断一个分区,用下面的代码应该可以,如果要判断整个硬盘,请自行修改...
@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 20:08
请自行修改 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

作者: binjie     时间: 2009-2-23 23:16
太感谢版主了。谢谢
作者: binjie     时间: 2009-2-23 23:24


  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下运行的?