這裏是在VBScript中的另類,,遍歷該目錄只有一次。
Set objFS=CreateObject("Scripting.FileSystemObject")
Set objArgs = WScript.Arguments
strFolder = objArgs(0)
strScriptName = WScript.ScriptFullName 'get script name
Set objFolder = objFS.GetFolder(strFolder)
Set dict = CreateObject("Scripting.Dictionary")
current = Now
temp=0
count=0 'count files
For Each strFile In objFolder.Files
If strFile.Path <> strScriptName Then 'do if not script name
count=count+1
dict.Add strFile.Path, strFile.DateLastModified
'if there are more than 21 files
If count >= 21 Then
flag=1
End If
End If
Next
filedate = dict.Items
filename = dict.keys
If flag = 1 Then
For i = 0 To dict.Count -1 'iterate dictionary
diffdate = DateDiff("d",filedate(i),now)
If num_days_diff >= temp Then
oldestfile = filename(i)
oldestdate = filedate(i)
temp = num_days_diff
End If
Next
End If
Set dict=Nothing
WScript.Echo "Oldest file: " & oldestfile, oldestdate
objFS.DeleteFile(oldestfile)
另存爲deletefile.vbs和命令行
c:\test> cscript /nologo deletefile.vbs c:\path\somewhere
我會嘗試你這個調試自己,但怎麼樣我只是告訴你我會怎麼做。首先,堅持一些回聲陳述。在前兩個'SET'語句之後添加一行'echo countfiles =%countfiles%'和'echo BACKUPDIR =%BACKUPDIR%'。然後在'IF'語句中添加一行,如'echo countfiles> 21>。簡單的調試技術可能會讓您自己發現故障。 – 2009-11-23 00:18:39
@PP:我thik這將是一個很好的答案或至少一個很好的指針:) – 2009-11-23 00:23:50