Работа с каталогами.

Каталогом называется объект файловой системы, служащий для структурирования и упорядочивания дискового пространства, путем группировки файлов и других каталогов. Каталог, находящийся в другом каталоге, называют подкаталогом, вложенным каталогом или дочерним каталогом. Таким образом складывается иерархия, в которой верхний каталог именуется корневым.

Термин "папка" (folder) уже более полувека применяется в иерархических файловых системах для наглядного представления каталога ФС, как аналогии обычной папки для документов. Соответствующие изображения бумажных папок используются в графических пользовательских интерфейсах операционных систем, хотя в некоторых случаях показываемая пользователю папка может не представлять определенного каталога в файловой системе.

Для работы с каталогами в vbs-скрипте необходимо создать объект FileSystemObject, который предоставляет методы для создания, удаления и получения ссылок на каталоги. Например, метод .GetFolder(), принимая в качестве аргумента путь, возвращает объект папки Folder. Коллекции Files и SubFolders объекта Folder дают доступ ко всем дочерним файлам и папкам, находящимся в определенном каталоге. Это позволяет, например, рекурсивно обойти все вложенные в него элементы.

Пример:

Sub printAllPaths(rootFolder, level)'вывести на экран все содержимое определенного каталога

    WScript.Echo String(level, "-") & ">" & rootFolder.Name'выводим имя переданного каталога

    For Each file In rootFolder.Files'выводим имена всех файлов в каталоге, делая отступ

        WScript.Echo String(level + 1, " ") & file.Name
	
    Next

    For Each folder In rootFolder.SubFolders'для каждого вложенного каталога запускаем getAllPaths

        Call printAllPaths(folder, level + 1)'увеличиваем отступ на 1

    Next

End Sub

Set fso = CreateObject("Scripting.FileSystemObject")

Set folderObj = fso.GetFolder(".")'получаем объект нужного каталога

Call printAllPaths(folderObj, 0)'передаем в процедуру объект каталога и уровень вложенности

Процедура clearFolder удаляет и создает папку заново, тем самым как бы очищая ее от содержимого.

Sub ClearFolder(fPath)'удаляет и создает заново директорию

    Set fso = CreateObject("Scripting.FileSystemObject")

    If fso.FolderExists(fPath) Then

        fso.DeleteFolder(fPath)

        fso.CreateFolder(fPath)

        WScript.Echo "Folder " & Chr(34) & fPath & Chr(34) & " has been cleared."

    Else

        WScript.Echo "Folder " & Chr(34) & fPath & Chr(34) & " do not exists!"

    End If

End Sub

Пример:

Const fPath = "C:\notExistingFolder"

WScript.Echo "Trying to clear folder " & Chr(34) & fPath & Chr(34)

Call clearFolder(fPath)'требуется путь к существующей папке

WScript.Echo "The End"