1

Тема: VBScript: проверка существования файла

Здравствуйте.
В общем ситуация такая, нужно перед копирование проверить существование файла. Нюанс в том что известна только часть имени файла. шаблон BPK81_backup_2010_10_08_???????.bak
Как можно это реализовать в vbs?

2 (изменено: Lucky, 2010-10-08 11:10:28)

Re: VBScript: проверка существования файла

Можно плясать от рекурсивного обхода всех файлов в папке:

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

Set Folder=objFSO.GetFolder("c:\backup\")

For each file in Folder.Files
    if Left(file.Name,24)="BPK81_backup_2010_10_08_" and right(file.name,4)=".bak" then
       msgbox file
    end if
Next
Стремление - залог успеха

3

Re: VBScript: проверка существования файла

А не проще

If objFSO.FileExists("File") Then..

?

4

Re: VBScript: проверка существования файла

Вот тоже метод с рекурсивным перебором и проверкой имени с помощью регулярных выражений:

Option Explicit

Dim objFSO, objRegExp, Path, objFolder, objItem
Set objFSO = CreateObject("Scripting.FileSystemObject")
Path = objFSO.GetAbsolutePathName("")
Set objFolder = objFSO.GetFolder(Path)
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Global = True
objRegExp.Multiline = True
objRegExp.IgnoreCase = True
objRegExp.Pattern = "BPK81_backup_2010_10_08_.+\.bak"
For Each objItem In objFolder.Files
    If objRegExp.Test(objItem.Name) = True Then
        WScript.Echo "файл "&objItem.Name&" найден"
    End If
Next

5

Re: VBScript: проверка существования файла

Lucky пишет:

Можно плясать от рекурсивного обхода всех файлов в папке:

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

Set Folder=objFSO.GetFolder("c:\backup\")

For each file in Folder.Files
    if Left(file.Name,24)="BPK81_backup_2010_10_08_" and right(file.name,4)=".bak" then
       msgbox file
    end if
Next

Все не так просто BPK81 тоже не посстаянное значение это название баз которые перебираются по списку и их названия разные по длине.

6

Re: VBScript: проверка существования файла

Все не так просто BPK81 тоже не посстаянное значение это название баз которые перебираются по списку и их названия разные по длине.

Тогда в приведенном мной примере замените строку

objRegExp.Pattern = "BPK81_backup_2010_10_08_.+\.bak"

на

objRegExp.Pattern = ".+_backup_2010_10_08_.+\.bak"

7

Re: VBScript: проверка существования файла

Не работает, ошибки не выдет, но и файл не видит.

8

Re: VBScript: проверка существования файла

Можно таким вот способом

function FileExistPattern (byval Pattern)

dim File, Proc, Shell
dim Path, Name

set File = CreateObject("Scripting.FileSystemObject")
set Shell = CreateObject("Shell.Application")

FileExistPattern = False
Path = File.GetParentFolderName(Pattern)
Name = File.GetFileName(Pattern)
if (Len(Path) = 0) then Path = CreateObject("WScript.Shell").CurrentDirectory
if (Len(Name) = 0) then exit function
if (not File.FolderExists(Path)) then exit function
set Folders = Shell.NameSpace(Path).Items
if (Folders is nothing) then exit function
Folders.Filter 64, Name
if (Folders.Count = 0) then exit function
FileExistPattern = True

end function