Как на VBS выбрать файл
Такая задача: есть файлы с названием archiv15052013_134956, archiv06052013_110003, archiv25042013_110014 и так далее, archiv - неизменная часть, дальше дата и время, необходимо выбрать из этих файлов предпоследний. Можно по названию, можно по дате изменения файла. Как это реализовать на vbs?
Всё до чего я пока додумал - несколько строк.
Код:
For Each File in objFolder.Files
If LCase(filesys.GetExtensionName(File)) = "rptk" AND _
DateDiff("D", File.DateLastModified, Now) < AND _
DatePart("h", File.DateLastModified) Then
File.Delete true
End If
Next
может подскажет кто-нибудь?
|
Например, так:
читать дальше »
Код:
Option Explicit
Const adDate = 7
Const adVarChar = 200
Dim strFolder
Dim objFSO
Dim objFile
Dim objRegExp
strFolder = "E:\Песочница\0253"
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objRegExp = WScript.CreateObject("VBScript.RegExp")
objRegExp.Pattern = "archiv\d{8}_\d{6}\.rptk"
If objFSO.FolderExists(strFolder) Then
With WScript.CreateObject("ADODB.Recordset")
With .Fields
.Append "Path", adVarChar, 2^15 - 1
.Append "DateLastModified", adDate
End With
.Open
.Sort = "DateLastModified DESC"
For Each objFile In objFSO.GetFolder(strFolder).Files
If objRegExp.Test(objFile.Name) Then
.AddNew Array("Path", "DateLastModified"), Array(objFile.Path, objFile.DateLastModified)
End If
Next
If .RecordCount >= 2 Then
.MoveFirst
.MoveNext
With .Fields
WScript.Echo .Item("DateLastModified").Value, vbTab, .Item("Path").Value
End With
Else
WScript.Echo "No such file"
End If
.Close
End With
Else
WScript.Echo "Can't find folder [" & strFolder & "]"
End If
Set objRegExp = Nothing
Set objFSO = Nothing
WScript.Quit 0
Естественно, если файлов меньше двух — предпоследнего не будет.
|
Iska, огромнейшее спасибо:)
|
Время: 14:44.
© OSzone.net 2001-