Board logo

标题: [问题求助] 磁盘容量检测出问题 循环 [打印本页]

作者: ydfan8888    时间: 2012-3-29 14:29     标题: 磁盘容量检测出问题 循环

本帖最后由 ydfan8888 于 2012-3-29 15:53 编辑

Set objWMIService = GetObject("winmgmts:")
Set objLogicalDisk = objWMIService.get("Win32_LogicalDisk.DeviceID='d:'")

s = objLogicaldisk.Size/(1024*1024*1024)
s = round(s,2) '全部磁盘容量
m = objLogicalDisk.FreeSpace/(1024*1024*1024)
m = round(m,2) '剩余磁盘空间
a = m/s
a = round(a,2)
w = (FormatPercent(a,2)) '磁盘剩余空间百分比

Set fso = CreateObject("Scripting.FileSystemObject")
pd1=fso.FileExists ("d:\1.txt")          '创建d:\1.txt文档
set n=fso.opentextfile("d:\1.txt",8,1)   '执行打开d:\1.txt文档
n.writeline now&"删除前可用大小"&w       '计算删除前磁盘剩余空间百分比并写入到d:\1.txt中
n.close

str= _                       
"@echo off&setlocal enabledelayedexpansion" & vbCrLf & _
"for /f ""delims="" %%a in ('dir /ad /b d:\rec\*') do (" & vbCrLf & _                  
"    echo %%a| findstr ""^[0-9]*-[0-9]*-[0-9]*$"">nul &&set #%%a=%%a" & vbCrLf & _     
")" & vbCrLf & _
"for /f ""tokens=1,2 delims=="" %%a in ('set #') do (" & vbCrLf & _
"    rd /s /q ""d:\rec\%%b\""& goto :eof" & vbCrLf & _                                 
")"
file="d:\1.bat"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.OpenTextFile(file,2,1).Write str
CreateObject("Wscript.Shell").Run """" & file & """",0,1

Do Until a > 0.1                                                           '执行剩余空间百分比判定
Set shell = WScript.CreateObject("WScript.shell")
shell.Run"d:\1.bat",0                                                  
Set objLogicalDisk = objWMIService.get("Win32_LogicalDisk.DeviceID='d:'")   '删除文件后再次进行磁盘空间计算
s = objLogicaldisk.Size/(1024*1024*1024)
s = round(s,2)
m = objLogicalDisk.FreeSpace/(1024*1024*1024)
m = round(m,2)
a = m/s
a = round(a,2)
Loop

w = (FormatPercent(a,2))                                                    '执行删除文件后计算剩余空间
set n=fso.opentextfile("d:\1.txt",8,1)
n.writeline now&"删除后可用大小"&w
n.writeline "请注意,当E盘容量小于10%时系统将自动删除保存最久的录音文件!"
n.close
call mail()
fso.DeleteFile file,1                                                       '执行删除d:\1.bat
fso.DeleteFile ("d:\1.txt")                                                 '执行删除d:\1.txt


按常理说当D盘可用容量小于10%才执行d:\1.bat脚本的  但是现在一运行就直接执行了1.bat
作者: batman    时间: 2012-3-29 14:32

************************************************************

  对不起,本贴因为标题过于模糊或含有敏感字符而触犯版规!请
楼主在仔细阅读论坛发贴规则后主动修改好标题。同时本贴将暂时禁
止回复,对于因此而给楼主带来的不便我们深表歉意,但也请楼主自
觉遵守和维护论坛秩序,谢谢!

请阅读论坛发贴规则:http://www.bathome.net/thread-963-1-1.html

提示:
        请大家在楼主修改标题并得到管理层认可之前不要给出任何有意义的回复。
        否则一律视为无视论坛纪律扣2分!(管理层和技术组扣4分)
        论坛是大家的,也要靠大家来维护。。。


************************************************************




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2