Объект FileSystemObject метод DriveExists, FolderExists и FileExists — Проверить наличие файла, папки или диска

Объект FileSystemObject метод DriveExists, FolderExists и FileExists — Проверить наличие файла, папки или диска Объектная модель Windows Script Host

Работа с файловой системой Windows приходится выполнять различные задачи – проверить наличие файла, папки или просто, определить местоположение документа. И если в операционной системе всё сводится к строке поиска, где нужно задать имя документа, то в программировании все это носит немного другой характер…

В этой статье мы рассмотрим три метода объекта FileSystemObject, который позволяет работать с файловой системой – DriveExists, FolderExists и FileExists, все три метода работают по одной логике, то есть, в качестве параметра (path) им передается стока (путь к диску, папке или файлу), если значение существует (диск, папка или файла), то методы возвращают логическое значениеtrue, если нет – логическое значение false.

  • DriveExists(path) – Проверить наличие диска
  • FolderExists(path) – Проверить наличие папки
  • FileExists(path) – Проверить наличие файла

Прежде чем мы приступим к программированию, давайте уточним некоторые различии при написании программного кода. При использовании данных методов в сценарии на языке vbscript, они буду возвращать значение «ложь» или «истина», а в сценариях на языке jscript будет возвращаться значение «true» и «false». Также обратите внимание, что метод DriveExists вернет логическую истину даже в том случае, если идёт проверка наличия съёмного дисковода, и в нём нет диска, файловая система Windows.

Файловая система Windows - провкрка наличия файла

Хорошо, теперь давайте приступи к написанию примеров:

'**********************************************
' Объект FileSystemObject, методы DriveExists FolderExists FileExists
' Проверить наличие файла, папки или диска
' Drive_Folder_FileExists.vbs
'**********************************************
 
Option Explicit
 
dim FSO, list
dim get_drive, get_folder, get_file
dim get_drive_ok, get_folder_ok, get_file_ok
 
' сперва создаем ссылку на экземпляр объекта FileSystemObject
set FSO=CreateObject ("Scripting.FileSystemObject")
 
list = "Проверить наличие файла, папки и диска" & vbCrLf & vbCrLf
 
'------------------------------------------------------------
' переменные хранять выдуманные данные
get_drive = "J:"
get_folder = "J:\Catalog"
get_file = "J:\Catalog\my_file.txt"
'------------------------------------------------------------
 
'------------------------------------------------------------
' переменные хранят реальные данные
get_drive_ok = "C:"
get_folder_ok = "C:\Windows"
get_file_ok = "C:\Windows\notepad.exe"
'------------------------------------------------------------
 
' получаем список значений для выдуманных данных
list = list & "Диск " & get_drive & " существует = " & FSO.DriveExists(get_drive) & vbCrLf
list = list & "Папка " & get_folder & " существует = " & FSO.FolderExists(get_folder) & vbCrLf
list = list & "Файл " & get_file & " существует = " & FSO.FileExists(get_file) & vbCrLf & vbCrLf
 
' получаем список значений для реальных данных
list = list & "Диск " & get_drive_ok & " существует = " & FSO.DriveExists(get_drive_ok) & vbCrLf
list = list & "Папка " & get_folder_ok & " существует = " & FSO.FolderExists(get_folder_ok) & vbCrLf
list = list & "Файл " & get_file_ok & " существует = " & FSO.FileExists(get_file_ok)
 
' выводим список значений
MsgBox list

В самом начале мы включаем проверку переменных с помощью конструкции Option Explicit и объявляем три блока переменных:

dim FSO, list – переменная FSO хранит ссылку на экземпляр объекта FileSystemObject, через неё мы получим доступ к методам DriveExists, FolderExists и FileExists, переменная list будет хранить список значений  — имя диска (папки, файла) и значение, которое возвращается соответствующим методом.

dim get_drive, get_folder, get_file – данные три переменные хранят путь к диску, папке и файлу, наличие которых надо проверить, соответствен. Я специально пописал для них мнимые значения, то есть, скорее всего, такого диска, папки или файла существовать не будет.

dim get_drive_ok, get_folder_ok, get_file_ok – для данных переменных я прописал уже реальные значения, которые позволят проверить наличие файла, диска и папки.

Далее происходит процесс создания ссылки на объект, и присвоение значений для соответствующий переменных. В самом конце мы используем функцию MsgBox языка vbscript для вывода значения переменной list. Обратите внимание, что для перевода строки мы использовали именованную константу vbCrLf.

//**********************************************
// Объект FileSystemObject, методы DriveExists FolderExists FileExists
// Проверить наличие файла, папки или диска
// Drive_Folder_FileExists.js
//**********************************************
 
var FSO, list;
var get_drive, get_folder, get_file;
var get_drive_ok, get_folder_ok, get_file_ok;
 
// сперва создаем ссылку на экземпляр объекта FileSystemObject
FSO=WScript.CreateObject ("Scripting.FileSystemObject");
 
list = "Проверить наличие файла, папки и диска\n\n";
 
//------------------------------------------------------------
// переменные хранять выдуманные данные
get_drive = "J:";
get_folder = "J:\\Catalog";
get_file = "J:\\Catalog\\my_file.txt";
//------------------------------------------------------------
 
//------------------------------------------------------------
// переменные хранят реальные данные
get_drive_ok = "C:";
get_folder_ok = "C:\\Windows";
get_file_ok = "C:\\Windows\\notepad.exe";
//------------------------------------------------------------
 
// получаем список значений для выдуманных данных
list += "Диск " + get_drive + " существует = " + FSO.DriveExists(get_drive) + "\n";
list += "Папка " + get_folder + " существует = " + FSO.FolderExists(get_folder) + "\n";
list += "Файл " + get_file + " существует = " + FSO.FileExists(get_file) + "\n\n";
 
// получаем список значений для реальных данных
list += "Диск " + get_drive_ok + " существует = " + FSO.DriveExists(get_drive_ok) + "\n";
list += "Папка " + get_folder_ok + " существует = " + FSO.FolderExists(get_folder_ok) + "\n";
list += "Файл " + get_file_ok + " существует = " + FSO.FileExists(get_file_ok);
 
// выводим список значений
WScript.Echo (list);

В этом примере сценария на языке jscript, логика работы аналогична предыдущему сценарию на языке vbscript. Обратите внимание, что тут мы для вывода данных использовали функцию Echo объекта WScript (смотрите статью «Объект WScript — базовые свойства и методы (sleep, quit, echo)«).

Определение существования файлов, папок и дисков с помощью программирования

Скачать архив с примерами

Хорошо, и так, в этой статье мы рассмотрели работу методов DriveExists, FolderExists и FileExists объекта (FSO) FileSystemObject, которые позволяют проверить наличие файла, папки или диска.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий