File io 删除除少数文件以外的所有文件

File io 删除除少数文件以外的所有文件,file-io,vbscript,File Io,Vbscript,因此,我必须编写一个脚本来删除除nlatest(最近创建的)之外的所有文件。我用两个参数运行脚本:文件夹目录和不应删除的文件数 这是我的脚本,但它实际上是删除随机文件。我怎样才能离开n最新的文件 如何运行脚本:delete C:\users\Adam\Desktop\Test 3 我的剧本: Dim address Dim n Set fso = CreateObject("Scripting.FileSystemObject") If (Wscript.Arguments.Count <

因此,我必须编写一个脚本来删除除
n
latest(最近创建的)之外的所有文件。我用两个参数运行脚本:文件夹目录和不应删除的文件数

这是我的脚本,但它实际上是删除随机文件。我怎样才能离开
n
最新的文件

如何运行脚本:
delete C:\users\Adam\Desktop\Test 3

我的剧本:

Dim address
Dim n
Set fso = CreateObject("Scripting.FileSystemObject")

If (Wscript.Arguments.Count <> 2) Then
    MsgBox("Wrong number of paramets")
Else
    address = Wscript.Arguments(0)
    n = Wscript.Arguments(1)
    MsgBox( address & " " & n)
    Set objFolder = fso.GetFolder(address)
    For Each objFile in objFolder.files
        If n <> 0 Then
            n = n - 1
        else
            objFile.Delete True
        End If
    Next
End if 
Dim地址
暗淡的
设置fso=CreateObject(“Scripting.FileSystemObject”)
如果(Wscript.Arguments.Count 2),则
MsgBox(“参数数量错误”)
其他的
地址=Wscript.Arguments(0)
n=Wscript.Arguments(1)
MsgBox(地址(&n)
设置objFolder=fso.GetFolder(地址)
对于objFolder.files中的每个objFile
如果n0那么
n=n-1
其他的
objFile.Delete True
如果结束
下一个
如果结束
带排序的代码:

Function SortFiles(files)
  ReDim sorted(files.Count - 1)
  Dim file, i, j
  i = 0
  For Each file in files 
    Set sorted(i) = file
    i = i + 1
  Next
  For i = 0 to files.Count - 2 
    For j = i + 1 to files.Count - 1
      If sorted(i).DateLastModified < sorted(j).DateLastModified Then
        Dim tmp
        Set tmp = sorted(i)
        Set sorted(i) = sorted(j)
        Set sorted(j) = tmp
     End If
    Next
  Next
  SortFiles = sorted
End Function

If (Wscript.Arguments.Count <> 2) Then
    MsgBox("Wrong number of paramets")
else
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim files
    address = Wscript.Arguments(0)
    n = Wscript.Arguments(1)
    Set files = fso.GetFolder(address).Files
    Dim file
    For Each file in SortFiles(files)
        If n <> 0 Then
            n = n - 1
        else
            file.Delete True
        End If
    Next
end if
函数排序文件(文件)
已排序的ReDim(files.Count-1)
Dim文件,i,j
i=0
对于文件中的每个文件
设置排序(i)=文件
i=i+1
下一个
对于i=0的文件。计数-2
对于文件j=i+1。计数-1
如果排序(i).DateLastModified<排序(j).DateLastModified则
暗tmp
设置tmp=已排序(i)
集合排序(i)=排序(j)
集合排序(j)=tmp
如果结束
下一个
下一个
排序文件=已排序
端函数
如果(Wscript.Arguments.Count 2),则
MsgBox(“参数数量错误”)
其他的
模糊fso
设置fso=CreateObject(“Scripting.FileSystemObject”)
暗文件
地址=Wscript.Arguments(0)
n=Wscript.Arguments(1)
Set files=fso.GetFolder(address).files
暗文件
对于排序文件(文件)中的每个文件
如果n0那么
n=n-1
其他的
文件。删除True
如果结束
下一个
如果结束

以下各项应能完成此工作:

Dim address
Dim n, no_of_files

Set fso = CreateObject("Scripting.FileSystemObject")

If (Wscript.Arguments.Count <> 2) Then
    MsgBox("Wrong number of paramets")
Else
    address = Wscript.Arguments(0)
    n = Wscript.Arguments(1)
    MsgBox( address & " " & n)
    Set objFol = fso.GetFolder(path)
    no_of_files = n
    While no_of_files>0
        latestDate = 0
        Set objFiles = objFol.Files

        'Loop to get the creation date of the newest File 
        For Each file In objFiles
            tempDate = file.DateCreated
            If CDate(tempDate)>CDate(latestDate) Then
                latestDate = tempDate
            End If
        Next

        'Loop to delete the newest file using the date fetched in the last loop
        For Each file In objFiles
            If file.DateCreated = latestDate Then
                file.Delete True
            End If
        Next
        no_of_files = no_of_files-1
    Wend
End if
Set fso = Nothing
Dim地址
Dim n,没有\u个\u文件
设置fso=CreateObject(“Scripting.FileSystemObject”)
如果(Wscript.Arguments.Count 2),则
MsgBox(“参数数量错误”)
其他的
地址=Wscript.Arguments(0)
n=Wscript.Arguments(1)
MsgBox(地址(&n)
设置objFol=fso.GetFolder(路径)
没有\u个\u文件=n
而没有超过0个的\u文件
latestDate=0
设置objFiles=objFol.Files
'循环以获取最新文件的创建日期
对于objFiles中的每个文件
tempDate=file.DateCreated
如果CDate(tempDate)>CDate(latestDate),则
latestDate=临时日期
如果结束
下一个
'循环使用上次循环中获取的日期删除最新文件
对于objFiles中的每个文件
如果file.DateCreated=latestDate,则
文件。删除True
如果结束
下一个
无\u文件=无\u文件-1
温德
如果结束
设置fso=无

当你说“最新”时,你是指最近创建的还是最近修改的?我是指已创建的。如果你想保存最新的文件,你需要在删除除
n以外的所有文件之前对其进行排序。请参阅和以了解实现此目的的方法。@freginold的答案中需要使用的属性是objFile。DateCreated@murilo这个解决方案有效吗?