Войти

Показать полную графическую версию : [решено] Найти файл по части имени


bombording
04-04-2014, 10:23
Добрый день.
Имеется папка с файлами:

filename001.zip
filename002.zip
filename003.zip
filenameOther004.zip
filenameOther005.zip
filenameOther006.zip
...

А а так же скрипт, который находит определенный файл по маске filename001.

Option Explicit
Dim arr10To36
Dim objFSO
Dim i, j, k
Dim strFileName, strMaskFile, strSourceFolder

strMaskFile = "filename001"
strSourceFolder = "D:\folder\"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

strFileName = strMaskFile & ".zip"

If Not objFSO.FileExists(objFSO.BuildPath(strSourceFolder, strFileName)) Then
MsgBox ("Не найден"),16
Else
MsgBox ("Найден"),16
End If

Set objFSO = Nothing


Необходимо что бы скрипт искал файл не по полной маске файла, а по трем последним цифрам(без расширения), не учитывая остальную часть имени файла (filename или filenameOther). Например по 001 будет найден файл filename001.zip

Помогите пожалуйста реализовать.
Спасибо.

Iska
04-04-2014, 10:52
Пробуйте:
Option Explicit

Dim strFolder
Dim strMask

Dim objFSO
Dim objRegExp
Dim objFile

Dim boolFound


strFolder = "D:\folder"
strMask = "^.*001\.zip$"


Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objRegExp = WScript.CreateObject("VBScript.RegExp")

With objRegExp
.Pattern = strMask
.IgnoreCase = True
End With

If objFSO.FolderExists(strFolder) Then
boolFound = False

For Each objFile In objFSO.GetFolder(strFolder).Files
If objRegExp.Test(objFile.Name) Then
WScript.Echo objFile.Name

boolFound = True
End If
Next

If boolFound Then
WScript.Echo "One or more files found."
Else
WScript.Echo "Nothing found."
End If
Else
WScript.Echo "Folder [" & strFolder & "] not found."
WScript.Quit 1
End If

Set objRegExp = Nothing
Set objFSO = Nothing

WScript.Quit 0




© OSzone.net 2001-2012