Доброго дня всем читателям блога 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:\work\233_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. Параметр должен содержать полный путь к каталогу, если такого каталога не существует, возникнет ошибка.
http://scriptcoding.ru/2013/07/30/getdrive-getfolder-getfile/
Владимир, спасибо за аперативность
Разобрался с грехом пополам.
Просто в примерах, в закоментированных строчках, путь указан как:
"
"
а в исполняемых как:
"
"
Это и сбило с толку, даже создав папки из описания, всеравно получал ошибку....
--------------------------
Спасибо еще раз за вашу работу.
P.S. Не могу найти, или их просто нет - видео уроков по cmd ?
Рад за Вас. У меня по CMD видеоуроков точно нет... всему свое время