Объект Folder — работа с папками Windows

Объект Folder — работа с папками Windows Объектная модель Windows Script Host

Доброго дня всем читателям блога scriptcoding.ru. Сегодня мы затронем такую тему как работа с папками Windows. Прежде всего, мы рассмотрим программные методы для управления каталогами и напишем несколько примеров программного кода.

Работа с папками средствами Windows Script Host осуществляется с помощью встроенного объекта Folder и коллекции Folders. Прежде чем начать работать с директориями, надо получить доступ к классу Folder, это можно сделать с помощью свойства RootFolder класса Drive или методов GetFolder, GetParentFolder и GetSpecialFolder объекта FileSystemObject. Прежде чем переходить к практическим примерам, давайте рассмотрим теорию.

Свойства объекта Folder – работа с папками Windows

Attributes – Позволяет при работе с папками просмотреть или установить для нее атрибуты. Доступные атрибуты можно просмотреть в статье «Объект File: работа с файлами».

DateCreated – Дата и время создания. Только чтение.

DateLastAccessed — Дату и время последнего обращения к каталогу. Только чтение.

DateLastModified — Дату и время последней модификации директории. Только чтение.

Drive – Возвращает букву диска, на котором размещена папка. Только чтение.

Files – Данное свойство позволяет получить доступ к коллекции Files

IsRootFolder – Если указан корневой каталога, то свойство вернет TRUE — 1, иначе, FALSE — 0.

Name – При работе с папками позволяет изменить их имя. Чтение и запись.

ParentFolder – Возвращает родительскую директорию (C:, D: и так далее). Только чтение.

Path — Путь к каталогу.

ShortName  — Короткое имя директории (например, 233_6E~3 ).

ShortPath – Короткий путь (например, C:work233_6E~3 ).

Size – Общий размер в байтах всех файлов и подкаталогов, что входят в данную папку.

SubFolders — Данное свойство позволяет получить доступ к коллекции Folders.

Type— Тип каталога

Методы объекта Folder – работа с Windows папками

работа с Windows папками

Сору(destination [,overwrite]) – При работе с папкой позволяет произвести ее копирование вместе с подкаталогами и файлами в заданное место, destination задает директорию, в которой будет производиться копирование, нельзя использовать подстановочные символы (*,? и так далее), overwrite : значение TRUE – произвести замену, FALSE – нет.

CreateTextFile(filename[,overwrite [,format]]) – Позволяет создать новый текстовый файл с именем filename и возвращает указывающий на этот файл класс Textstream (этот метод аналогичен методу CreateTextFile класса FileSystemObject), format – задает кодировку (ASCII – значение 0 или Unicode – значение 1).

Delete([force]) – При работе с папками позволяет удалить заданный каталог. Если параметр force равен false или отсутствует, то нельзя удалить директорию с атрибутом «только для чтения» (read-only), значение true решит эту задачу. Вместо метода Delete можно использовать метод DeleteFolder класса FileSystemObject.

Move(destination) — Перемещает каталог в другое место, destination определяет куда будет производиться перемещение; подстановочные знаки в имени недопус­тимы. Вместо метода Move можно использовать метод MoveFolder объекта FileSystemObject.

Коллекция Folders

Add(FolderName) – Данные метод при работе с папками позволяет создавать новый каталог. Аналогично, можно использовать метод CreateFolder объекта FileSystemObject.

Ниже я привожу два по работе с папками, первый на VBScript, а второй на JScript.

работаем с папками программно

Пример на языке vbscript:

'**********************************
' Объект Drive
' Работа с папками
' create-folders.vbs
'***********************************
Dim FSO, GetF, SubFolders2, s, new_folder
 
set fso = WScript.CreateObject("Scripting.FileSystemObject")
set new_folder=FSO.CreateFolder("new_folder_vbs")
set GetF=FSO.GetFolder(new_folder)
set SubFolders2=GetF.SubFolders
 
SubFolders2.Add("Новая папка4")
SubFolders2.Add("Новая папка5")
SubFolders2.Add("Новая папка6")
 
'Получаем коллекцию вложенных каталогов
For Each oFolder In SubFolders2     
     s = s & oFolder.Path & vbCrLf
Next
WScript.Echo s

Пример на языке jscript:

//**********************************
// Объект Drive
// Работа с Windowsпапками
// create-folders.js
//***********************************
var FSO, GetF, SubFolders1, s="", new_folder;
 
FSO = WScript.CreateObject("Scripting.FileSystemObject");
new_folder=FSO.CreateFolder("new_folder_js");
GetF=FSO.GetFolder(new_folder);
SubFolders1=GetF.SubFolders;
 
SubFolders1.Add("Новая папка1");
SubFolders1.Add("Новая папка2");
SubFolders1.Add("Новая папка3");
 
//Получаем коллекцию вложенных каталогов
SubFolders1= new Enumerator(GetF.SubFolders);
for (; !SubFolders1.atEnd(); SubFolders1.moveNext()) {   
    s+=SubFolders1.item() +"\n";      
}
WScript.Echo(s);

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

И так, с программированием мы закончили, теперь давайте разберем примеры. В самом начале мы создаем переменные, которые будут хранить ссылку на нужные классы. Эти классы нужны для доступа к файловой системе и создания новой директории (метод CreateFolder) в текущем каталоге. Последующая работа с папками заключается в создании нескольких подпапок, в самом конце с помощью цикла происходит перебор всех подпапок и вывод полного пути к ним.

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

  1. Diver

    Спасибо за уроки, Владимир. Косаемо двух скриптов выше, оба выдают такие ошибки:
    ===============================================
    Script: С: \______2013\create-folders. js
    Line: 8
    Char: 1
    Error: Path not found
    Code: 800A004C
    Source: Microsoft JScript runtime error ===============================================
    Script: С: \______2013\create-folders. vbs
    Line: 7
    Char: 1
    Error: Path not found
    Code: 800A004C
    Source: Microsoft VBScript runtime error ===============================================
    Сам я, пока не очень углубился в изучение, и сообразить почему они немогут определить путь немогу.

    Ответить
    1. Coding автор

      Path not found — Путь не найден, Просто измените путь к подопытной папке на свой и все… просто создайте на диске новую папку и пропишите к ней путь.

      Ответить
    2. Coding автор

      GetFolder(folderspec) – вернет объект Folder, для каталога заданного параметром folderspec. Параметр должен содержать полный путь к каталогу, если такого каталога не существует, возникнет ошибка. https://scriptcoding.ru/getdrive-getfolder-getfile/

      Ответить
  2. Diver

    Владимир, спасибо за аперативность
    Разобрался с грехом пополам.
    Просто в примерах, в закоментированных строчках, путь указан как:
    ‘ d:\\work\\work1 ‘
    а в исполняемых как:
    ‘ d:\\work\\temp ‘
    Это и сбило с толку, даже создав папки из описания, всеравно получал ошибку….
    —————————
    Спасибо еще раз за вашу работу.
    P.S. Не могу найти, или их просто нет — видео уроков по cmd ?

    Ответить
    1. Coding автор

      Рад за Вас. У меня по CMD видеоуроков точно нет… всему свое время

      Ответить