[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 磁盘容量检测出问题 循环

本帖最后由 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
1

评分人数

    • batman: 1、代码没用标签括起 2、标题相当模糊PB -4
Good Good Study,Day Day Up!!

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

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

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

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


************************************************************
***共同提高***

TOP

返回列表