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