2013-06-26 78 views
1

我在php中有这一行代码,它返回一个像这样的文件名数组;是否有一个相当于php glob函数的VBscript

1 => folderName/elev-a.jpg 
1 => folderName/elev-b.jpg 
1 => folderName/elev-c.jpg 
1 => folderName/elev-d.jpg 

..这是代码

$elev = glob($folderName.'/elev-[a-z].jpg'); 

我现在需要在ASP程序来使用这个。从我目前阅读的内容来看,这听起来像是我需要使用字典对象,文件系统对象,Regex对象和一些循环。这似乎也许我错过了VBscript中的一些我可能不知道的东西。复制这一功能真的很难吗?我迷路了。

回答

1

我没有做了一大堆的服务器端脚本,但我有一些东西躺在附近类似于你要找的东西:

Function GetFileNames(Directory, Pattern) 
Dim FileNames(), AfterPattern() 
Dim FolderObject, fso, f 
Dim i 
i = 0 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set FolderObject = fso.GetFolder(Directory) 
ReDim FileNames(FolderObject.Files.Count) 
ReDim AfterPattern(FolderObject.Files.Count) 
For Each f In FolderObject.Files 
    FileNames(i) = f.Path 
    i = i + 1 
Next 
'Pattern Portion 
Dim RegExp 
Set RegExp = CreateObject("VBScript.RegExp") 
RegExp.Pattern = Pattern 
RegExp.Global = False 
Dim x 
x = -1 
For i = LBound(FileNames()) To UBound(FileNames()) 
    If RegExp.Test(FileNames(i)) = True Then 
     x = x + 1 
     AfterPattern(x) = FileNames(i) 

    End If 
Next 
ReDim Preserve AfterPattern(x+1) 
GetFileNames = AfterPattern() 


Set fso = Nothing 
Set FolderObject = Nothing 
Set RegExp = Nothing 

End Function 

第二个参数是一个正则表达式模式为你在你的问题中提到。 :-)

干杯,LC

+2

看起来像这样的工作,allthough我宁愿使用一个ArrayList('设置AL =的CreateObject(“System.Collections中。 ArrayList“)'),因为你可以简单地将'.Add'项添加到AL中。最后你可以用'.ToArray()'创建一个简单的数组。请注意'可选'在VBS中不起作用,'f'从不声明,'Redim'中的'To'在VBS中也不起作用。 – AutomatedChaos

+0

@AutomatedChaos感谢您的反馈。 :) – dennythecoder

+0

哇!因此,这涉及到我认为的那样。非常感谢你。 –

-1

尝试以下操作:
$elev = glob($folderName.'/elev-'.'*');

+0

这不是VBScript。 –

相关问题