通过VBS搜索更新/更高版本的Folder

时间:2015-07-30 10:00:02

标签: vbscript directory

我想编写一个脚本来搜索更新版本的文件夹。但是,我不知道如何启动它。基本上我的目录中有3个文件夹。

  

15.0.4727.1002,15.0.4701.1002,15.0.4675

我想搜索具有更新版本或更高版本的文件夹。在这种情况下它是

  

15.0.4727.1002

1 个答案:

答案 0 :(得分:1)

由于您只需要集合中的一个元素(文件夹)(SubFolders),因此排序过度。但是您需要将文件夹名称转换为(正确)可排序的内容。这个子任务在答案中得到了解决。

转换可以通过格式化(填充)文件夹名称的各个部分来完成:

Option Explicit

Dim oFS  : Set oFS  = CreateObject("Scripting.FileSystemObject")
Dim oSB  : Set oSB  = CreateObject("System.Text.StringBuilder")
Dim sLst : sLst     = "" ' smallest possible value
Dim oLst : Set oLst = Nothing

Dim oDir
For Each oDir In oFS.GetFolder("..\f").SubFolders
    Dim aParts : aParts = Split(oDir.Name, ".")
    ReDim Preserve aParts(3)
    oSB.AppendFormat_4 "{0,6}{1,6}{2,6}{3,6}", (aParts)
    Dim sKey   : sKey   = oSB.ToString() : oSB.Length = 0
    If sLst < sKey Then
       sLst     = sKey
       Set oLst = oDir
    End If
Next
If Not oLst Is Nothing Then
   WScript.Echo "latest:", oLst.Name
End If

输出:

cscript 31720684.vbs
latest: 15.0.4727.1002

更新评论:

通过在循环之前将oLst设置为Nothing ,我可以在循环后测试以防止空/无子文件夹目录。或者:如果我想使用oLst.Name,我应该确保oLst是一个(可用的)对象。