Объект FileSystemObject метод DeleteFolder — удалить пустые папки

Объект FileSystemObject метод DeleteFolder — удалить пустые папки Объектная модель Windows Script Host

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

Но вот в программировании всё не так просто, порой то, что кажется логичным и простым в глазах человека, представляет трудность для программного кода. Например, что бы удалить пустые папки в Windows, мы сначала проверяем их содержимое, если ничего нет – жмем клавишу "DEL", в менеджере TotalCommander всё еще проще – мы можем просто выбрать нужную папку и нажать пробел, в итоге, если папка не пуская, то мы увидим ее размер, и соответственно поймём, удалить пустые папки или нет…

Как я сказал, в программировании простые задачи не всегда решаются столь же просто, так, у объекта FileSystemObject есть метод DeleteFolder, который позволяет удалить пустые папки в Windows, но это только условность. Дело в том, что если папка пустая, то удаление пройдёт без проблем, если же нет – возникнет ошибка. Если включить в программном коде обработку ошибок, то не нужно будет предварительно проверять содержимое или размер папки перед её удалением.

Давайте подробно рассмотрим метод DeleteFolder…

DeleteFolder(folderspec [,force]) – видим, что метод принимает два параметра:

  • folderspec – путь к папке, которую надо удалить, можно использовать подстановочные знаки, например «?» – любой символ и «*» – любое количество символов, это позволяет удалить сразу несколько пустых папок без применения циклов.
  • force – Необязательный параметр, принимает логическое значение, true — будут удалены папки с атрибутом только для чтения и false (по умолчанию) – каталоги с атрибутом только для чтения не будут удалены, файловая система Windows.
Удаление пустых папок в файловой системе Windows

Стоит отметить, что метод DeleteFolder будет удалять и все вложенные папки, которые находятся в заданном каталоге, естественно, все они должны быть пустыми.

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

'**********************************************' Объект FileSystemObject метод DeleteFolder' Удалить пустые папки' DeleteFolder.vbs'********************************************** OptionExplicit dim WshShell, cur_dir, FSOdim new_folder, new_file, new_sub_folder, i ' формируем ссылку на объектset WshShell = CreateObject("WScript.Shell"' путь к текущему каталогуcur_dir = WshShell.CurrentDirectory ' создаем ссылку на экземпляр объекта FileSystemObjectset FSO=CreateObject ("Scripting.FileSystemObject"' в текущей папке создаем новый каталогset new_folder=FSO.CreateFolder("Новый каталог_vbs"' циклично создаем 9 каталоговfor i=1 to 9     set new_sub_folder=FSO.CreateFolder(new_folder & "" & i & "_каталог")next WScript.Echo "Проверьте содержимое каталога " & new_folderWScript.Echo "Сейчас произойдет удаление пустой папки " & new_folder ' производим удаление папки и подпапокFSO.DeleteFolder new_folder, true WScript.Echo "Процесс удаления завершен"

Данный сценарий на языке vbscript создает в текущем каталоге папку, потом в ней создается девять вложенных папок, далее происходит вызов метода DeleteFolder,  что бы удалить пустые папки и сам каталог, в котором они находятся. Переменная cur_dir содержит строковое значение – путь к текущей папке, мы его получаем с помощью свойства CurrentDirectory объекта WScript.Shell (более детально, можете почитать статью «Объект WScript.Shell — метод ExpandEnvironmentStrings и свойство CurrentDirectory«). Переменная new_sub_folder содержит путь к вложенной папке, значение будет меняться в цикле for девять раз, то есть, мы создадим девять папок (детальнее, читайте «Урок 6 по VBScript: Циклы for…next и for each…next«). В самом сценарии будет выводиться трижды диалоговое окно, сперва – просьба проверить содержимое текущей папки, потом – информация о том, что произойдет удаление новой пустой папки и всех вложенных в нее папок, ну и в конце – сообщение о том, что всё прошло успешно.

//**********************************************// Объект FileSystemObject метод DeleteFolder// Удалить пустые папки// DeleteFolder.js//********************************************** var WshShell, cur_dir, FSO;var new_folder, new_file, new_sub_folder, i; // формируем ссылку на объектWshShell = WScript.CreateObject("WScript.Shell"); // путь к текущему каталогуcur_dir = WshShell.CurrentDirectory; // создаем ссылку на экземпляр объекта FileSystemObjectFSO=WScript.CreateObject("Scripting.FileSystemObject"); // в текущей папке создаем новый каталогnew_folder=FSO.CreateFolder("Новый каталог_js"); // циклично создаем 9 каталоговfor(i=1; i<=9; i++){     new_sub_folder=FSO.CreateFolder(new_folder +"\"+ i +"_каталог");} WScript.Echo("Проверьте содержимое каталога "+ new_folder);WScript.Echo("Сейчас произойдет удаление пустой папки "+ new_folder); // производим удаление папки и подпапокFSO.DeleteFolder(new_folder,true) WScript.Echo("Процесс удаления завершен");

В этом сценарии мы также используем цикл for для создания девяти вложенных каталогов (смотрите «Урок 9 по JScript: Цикл for «). Обратите внимание, что тут вместо одной косой черты мы прописывали две, также, вместо символа «&» мы написали «+».

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

Использование метода DeleteFolder класса FileSystemObject

И так, в этой статье мы рассмотрели метод DeleteFolder объекта FileSystemObject, который позволяет удалить пустые папки, если есть вопросы, пишите в комментариях.

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