PDA

Показать полную графическую версию : Проверка существования файла


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

megaloman
08-10-2010, 12:43
vbs
' Проверка существования файлов в директории по маске

' Исходные данные ------------------------------------------------
iDir = "I:\Всякая дребедень" ' Директория где смотрим
Maska = "^BPK81_backup_2010_10_08_.......\.bak$" ' Маска файлов

' ------------------------------------------------------------------

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Files = FSO.GetFolder(iDir).Files

Set Re = New RegExp
Re.Pattern = Maska
Re.IgnoreCase = True

For Each File In Files
If Re.Test(File.Name) Then MsgBox File.Name ' Если файл по маске найден, выдаём сообщение
Next
' Копировать файлы по маске

' Исходные данные ------------------------------------------------
iDir = "I:\Всякая дребедень" ' Директория где смотрим
oDir = "I:\Delete" ' Директория куда копируем
Maska = "BPK81_backup_2010_10_08_???????.bak" ' Шаблон файлов

' ------------------------------------------------------------------

Set FSO = CreateObject("Scripting.FileSystemObject")

FSO.CopyFile iDir + "\" + Maska, oDir, True

admin-nsk
13-10-2010, 10:02
Не работатет, ошибки не выдает но и файл не видит.

megaloman
13-10-2010, 12:25
Проверено, работает, а если ничего не выдаёт, значит файлы с именами, соответствующими маске, не существуют(м б Вы неправильно описали маску в регулярном выражении). Я правильно понял, что в вашей маске ??????? обозначают 7 символов? Попробуйте вместо
If Re.Test(File.Name) Then MsgBox File.Name
поставить
MsgBox File.Name
и убедитесь, что скрипт просматривает все файлы в указанной папке.
Прикрепляю файл, в котором приведена смесь файлов, среди которых есть соответствующие маске. Там же и текст скрипта




© OSzone.net 2001-2012