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这个解决方案有效吗?