Доброго дня всем читателям блога 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 папками
Сору(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) в текущем каталоге. Последующая работа с папками заключается в создании нескольких подпапок, в самом конце с помощью цикла происходит перебор всех подпапок и вывод полного пути к ним.
Спасибо за уроки, Владимир. Косаемо двух скриптов выше, оба выдают такие ошибки:
===============================================
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 ===============================================
Сам я, пока не очень углубился в изучение, и сообразить почему они немогут определить путь немогу.
Path not found — Путь не найден, Просто измените путь к подопытной папке на свой и все… просто создайте на диске новую папку и пропишите к ней путь.
GetFolder(folderspec) – вернет объект Folder, для каталога заданного параметром folderspec. Параметр должен содержать полный путь к каталогу, если такого каталога не существует, возникнет ошибка. https://scriptcoding.ru/getdrive-getfolder-getfile/
Владимир, спасибо за аперативность
Разобрался с грехом пополам.
Просто в примерах, в закоментированных строчках, путь указан как:
‘ d:\\work\\work1 ‘
а в исполняемых как:
‘ d:\\work\\temp ‘
Это и сбило с толку, даже создав папки из описания, всеравно получал ошибку….
—————————
Спасибо еще раз за вашу работу.
P.S. Не могу найти, или их просто нет — видео уроков по cmd ?
Рад за Вас. У меня по CMD видеоуроков точно нет… всему свое время