vbs 定时删除功能实现代码
2014-08-12来源:

参考代码一:

代码如下:

Function DeleteLog( )

    Dim objFSO, objFolder, strPath, targetFSO, subFSO, DirPath  

    DirPath = createobject("Scripting.FileSystemObject").GetFile(Wscript.ScriptFullName).ParentFolder.Path&"\Log\"

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    Set targetFSO =  objFSO.GetFolder(DirPath)

    Set subFSO = targetFSO.SubFolders

    For Each subFolder in SubFSO

If DateDiff("d", subFolder.name, date)>3 Then

    strPath = DirPath&subFolder.name

    objFSO.DeleteFolder(strPath)

    End If

    Next

End Function

Call DeleteLog( )

这样在task Schdeuler里面schedule我的vbs程序就没有报错啦。撒花,结贴~~

参考代码二:

代码如下:

Dim dqxs, dqrq, szxs, szfz, dqml, datp

Dim jclb

Dim c

dim d

'=========================================================

datp = "F:"

szxs = "7:00:"

wjml = datp & "\DVRDat\"

sykj = 20000000000 '20个G

dqml = left(wscript.scriptfullname,instrrev(wscript.scriptfullname,"\")-1)

jclb = "ServicesManager.exe,PD_Server.exe,SpeedServer.exe,CoreServer.exe,DownloadSVC.exe,ManagerConsole.exe,Gptsvr.exe,HintAMProxy.exe,FileServer.exe,CleanDisk.exe,GetNetData.exe,SGUClient.exe,SGUServer.exe,"

set WshShell = WScript.CreateObject("WScript.Shell")

Set fso = Wscript.CreateObject("Scripting.FileSystemObject")

'=========================================================

if fso.GetDrive(datp).FreeSpace < sykj then call cprlql

do

    If InStr(time, szxs) <> 0 Then

        if fso.GetDrive(datp).FreeSpace < sykj then call cprlql

    end if

    WScript.Sleep(60*1000)

loop

getfso=fso.GetFolder("c:\\windows").DateCreated

'===========================================================

Function cprlql

    Dim strline, scml

    WshShell.run "cmd /c dir " & wjml &" /ad /b /tc>c:\dir.log",0

    if fso.FileExists("c:\dir.log") then

        Set objFile = fso.OpenTextFile("c:\dir.log")                

        do until objFile.atendofstream

            strline = objFile.readline

            scml = wjml & strline

            WshShell.run "cmd /c rd /s /q " & scml,0

            for i = 1 to 20

                if fso.GetDrive(datp).FreeSpace > sykj then exit Function

                if fso.FolderExists(scml) then

                    WScript.Sleep(1000)

                else

                    exit for

                end if

            next

            if fso.GetDrive(datp).FreeSpace > sykj then exit Function

        loop

    end if

End Function

更多信息请查看IT技术专栏

推荐信息
Baidu
map