我想编写一个脚本来搜索更新版本的文件夹。但是,我不知道如何启动它。基本上我的目录中有3个文件夹。
15.0.4727.1002,15.0.4701.1002,15.0.4675
我想搜索具有更新版本或更高版本的文件夹。在这种情况下它是
15.0.4727.1002
答案 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
是一个(可用的)对象。