Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как на VBS выбрать файл (http://forum.oszone.net/showthread.php?t=260601)

RazdoR 15-05-2013 14:13 2150449

Как на 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

может подскажет кто-нибудь?

Iska 15-05-2013 16:09 2150490

Например, так:
читать дальше »
Код:

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


Естественно, если файлов меньше двух — предпоследнего не будет.

RazdoR 16-05-2013 08:53 2150844

Iska, огромнейшее спасибо:)


Время: 14:44.

Время: 14:44.
© OSzone.net 2001-