Vbs получить расширение файла

Обновлено: 07.07.2024

Создавая сценарии, позволяющие автоматизировать различные процессы в сети, зачастую необходимо программно управлять файловой системой NTFS, а именно: создавать, удалять, перемещать, копировать файлы и папки; изменять их атрибуты и права доступа к ним. Такие сценарии могут быть созданы с помощью VBScript или JSсript. В данной статье все примеры будут приведены на VBScript.

Основы программного управления файловой системой

Для программного управления файловой системой NTFS с помощью VBScript рекомендуется использовать встроенный объект FileSystem Object, поддерживающий набор методов, перечисленных в таблице 1:

Объект или набор

Набор всех логических, физических и съемных дисков

Объект, методы и свойства которого позволяют обращаться к диску, получать о нем различную информацию

Набор всех подпапок в каталоге

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

Набор всех файлов в папке

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

Главный объект объектной модели. Поддерживает все методы и свойства для доступа к файловой системе

Методы этого объекта позволяют осуществлять различные манипуляции с текстовыми файлами

Для получения доступа к объектам FSO необходимо создать переменную-объект и присвоить ей ссылку на объект FileSystemObject:

После создания объекта становятся доступны его методы, свойства и дочерние объекты. Поскольку в данной статье будут рассмотрены вопросы, касающиеся операций с файлами и папками, то некоторые объекты и наборы, такие как Drive(s) и TextStream, не будут рассмотрены.

Программное получение доступа к папкам

С помощью набора Folders осуществляется формирование списка вложенных файлов и папок в указанном каталоге; просмотр атрибутов каталога; создание, перемещение, переименование и удаление папок.

Доступ к набору Folders можно получить, воспользовавшись следующим шаблоном:

где path – путь к каталогу, например, «C:FolderName» или «ServerShareName».

В качестве обработчика ошибок рекомендуется использовать функцию FolderExists(), с помощью которой можно определить существует ли каталог, по указанному пути:

If fso.FolderExists(path) then

MsgBox "Folder " + path + " Not Exists"

Определение списка подпапок в указанной директории

Формирование списка осуществляется с помощью свойства Name набора SubFolders и Files. С помощью набора SubFolders определяется список папок, вложенных в указанный каталог, а с помощью Files – соответственно список файлов. Приведем пример, в котором будет определены подпапки каталога Windows:

If fso.FolderExists(path) then

For each i In OSubFolders

Temp= "Folder " + path + " Not Exists"

Определение списка всех вложенных подпапок в каталоге

Для чтения всей структуры подкаталогов необходимо вышеописанный механизм поместить в функцию и сделать ее рекурсивной[1]. Функция будет иметь два параметра – путь к абсолютному подкаталогу (PATH) и уровень вложенности подкаталогов (IDX).

Данные, содержащие абсолютные пути к подкаталогам, разумно записывать в динамический одномерный массив. Приведем пример создания и заполнения элементов динамического массива на примере чтения структуры подкаталогов, затем приведем шаблон рекурсивной функции.

Dim Array() 'Объявление динамического массива

' Изменение размера динамического массива

Redim Preserve Array(oFolders.count)

For Each of In oFolders

Array(i)=cstr(oF.Path) ' Запись элементов в массив

'Чтение элементов массива:

For i=Lbound(Array) to Ubound(Array)

Шаблон рекурсивной функции:

' Вызов функции RecFolder в теле сценария

RecFolder index, path

Function Recfolder (idx, path)

Call Recfolder (idx+1, path)

На основе изложенного материала приведем листинг скрипта, который позволяет определить названия всех подпапок, вложенных в указанный каталог (в примере – переменная path):

MsgBox "oFolders_count: "+cstr(detect(q))

For j=0 to cstr(ubound(path_array)-1)

Redim Preserve path_array(oFolders.count)

For Each oF In oFolders

Определение списка файлов, находящихся в директории

Методика определения списка файлов, содержащихся в директории, та же, что и в случае определения списка подкаталогов. Разница заключается в том, что вызывается набор Files, а не SubFolder:

Set WSHShell = WScript.CreateObject("WScript.Shell")

MsgBox "oFiles_count: "+cstr(oFiles.count)

For each oFile in oFiles

temp=temp & oFile.name & chr(13)

Управление атрибутами файлов

Каждый файл имеет набор параметров, которые его характеризуют – название, расширение, размер, даты создания и последнего изменения файла, его атрибуты. О том, как считывать названия файлов и их расширения, было рассказано ранее. Пришло время рассказать о методике чтения дат и атрибутов файлов.

Определение атрибутов файлов

Получив доступ к файлам, как это показано в предыдущем разделе, с помощью свойства Attributes можно определить атрибуты файлов.

Свойство Attributes возвращает двоичное значение, расшифровка которых приведена в таблице:

Файл без установленных атрибутов

Файл с атрибутом «только для чтения»

Файл с атрибутом «архивный», модифицированный со времени последнего резервного копирования

Ярлык (файл с расширением LNK)

Сжатый файл (только для Windows 2k)

Приведем пример чтения атрибута файла boot.ini:

Set WSHShell = WScript.CreateObject("WScript.Shell")

MsgBox oFile.Name&": "& oFile.Attributes

Если атрибуты этого файла никто не изменял, то значение свойства oFile.Attributes будет равно 39, что в соответствии с таблицей обозначает, что boot.ini имеет следующие атрибуты: только для чтения, скрытый, системный, архивный.

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

Set WSHShell = WScript.CreateObject("WScript.Shell")

if fso.FileExists(path) then

MsgBox oFile.Name&": "& temp

MggBox "Файл " &path& " не существует"

if (Attr_value and &H01)> 0 Then t=t+"Только для чтения; "

if (Attr_value and &H02)> 0 Then t=t+"Скрытый; "

if (Attr_value and &H04)> 0 Then t=t+"Системный; "

if (Attr_value and &H20)> 0 Then t=t+"Архивный; "

if (Attr_value and &H800)> 0 Then t=t+"Сжатый; "

Изменение атрибутов файлов

Изменение атрибутов файлов с помощью FSO осуществляется присвоением другого значения переменной oFile.Name. Значение может быть присвоено как в шестнадцатеричном, так и в десятеричном виде в (см. таблицу 2):

Set WSHShell = WScript.CreateObject("WScript.Shell")

MsgBox oFile.Name&": "& oFile.Attributes

MsgBox oFile.Name&": "& oFile.Attributes

По умолчанию вновь созданный файл readme.txt имеет атрибут «Архивный»(32). Присвоив параметру oFile.Attributes значение 39, файлу будут назначены следующие атрибуты: только чтение, скрытый, системный, архивный.

Операции над файлами и папками

Над файлами и папками можно производить следующие операции: создание, копирование, перемещение, удаление. Сначала опишем операции, выполняемые с папками, затем файлами.

Создание и удаление папок

Создание и удаление каталогов осуществляется с помощью методов CreateFolder(path) и DeleteFolder(path) объекта FSO. Параметром каждого из этих методов является путь к каталогу – path. Используя эти методы, желательно включать в листинг скрипта обработчик ошибок, который проверяет наличие или отсутствие папки перед осуществлением каких-либо манипуляций с ней. Приведем два примера: первым из них проиллюстрируем процесс создания новой папки C:TempFolder; во втором – процесс удаления этой папки.

If fso.FolderExists(path)=0 then

Temp= "Folder " + path + " Created "

Temp= "Folder " + path + " Already Exists"

If fso.FolderExists(path)<>0 then

Temp= "Folder " + path + " Deleted"

Temp= "Folder " + path + " is Absent "

Переименование, копирование и перемещение папок

Копирование папок осуществляется с помощью метода CopyFolder source, destination, overwrite, перемещение и переименование – с помощью MoveFolder source, destination, overwrite. Каждый их этих методов имеет три параметра:

Source – обязательный параметр, в котором передается строка с именем исходной папки (путем); путь может включать знаки подстановки, такие как «?» или «*». Рекомендуется использовать знаки подстановки для копирования или перемещения нескольких папок, одновременно удовлетворяющих заданному шаблону

Destination – обязательный параметр, задающий путь к папке назначения в виде строки. Значение этого параметра не может содержать символов подстановки. В том случае если путь заканчивается «» и папка-приемник не существует, то она будет создана.

Overwrite – необязательный параметр, который принимает значение False(0) или True(1). Если он равен True, т.е. 1 (по умолчанию), то целевая папка будет перезаписана.

Обратите внимание на то, что параметры указываются без скобок. Приведем примеры копирования и перемещения папок. Копирование папки:

fso.CopyFolder OldPath, NewPath, 1

MsgBox "Папка " + OldPath + " скопирована в " + NewPath

fso.MoveFolder OldPath, NewPath, 1

MsgBox "Папка " + OldPath + " перемещена в " + NewPath

Копирование и перемещение файлов

Копирование и перемещение файлов осуществляются с помощью методов Copy и Move соответственно. Поскольку использование этих методов одинаково, то они будут рассмотрены совместно. Шаблон вызова любого метода следующий:

If (fso.FileExistes(PathOld)) Then

где вместо «****» указывается название метода. Различие в использовании методов заключается в том, что при вызове метода Move после копирования файла осуществляется удаление первоисточника.

Приведем пример копирования файла:

If (fso.FileExistes(PathOld)) Then

Удаление файла осуществляется с помощью метода Delete, вызываемого аналогичным способом. Отличается лишь синтаксис самого метода: у метода Delete, в отличие от Copy или Move, отсутствуют параметры:

If (fso.FileExistes(PathDel)) Then

Управление правами доступа на файлы и папки

Создавая новую папку или файл на жестком диске с файловой системой NTFS, новому объекту присваиваются права доступа по определенным правилам. Если разговор идет о создании общих папок на сервере, то системного администратора, как правило, не устроят права доступа, назначаемые по умолчанию: они должны быть изменены в соответствии с определенными правилами, описываемыми шаблоном. О том, как программно изменить права доступа на папки и файлы, и пойдет разговор в следующем разделе.

Команда регистрации библиотеки выглядит следующим образом:

regsvr32.exe /s ADsSequrity.dll

Доступ к вышеуказанной библиотеке осуществляется с помощью функции CreateObject(«ADsSecurity») по следующему сценарию:

Set sec = CreateObject("ADsSecurity")

Set sd = sec.GetSecurityDescriptor("FILE://c:\folder")

Set dacl = sd.DiscretionaryAcl

For Each ace In dacl

Wscript.Echo cstr(ace.Trustee)+" " + cstr(ace.AccessMask) + " " + cstr(ace.AceType) + chr(13)+chr(10)

Как видно из примера, для управления правами необходимо создать новый экземпляр объекта ADsSecurity и указать к нему путь, который является параметром функции GetSecurityDescriptor(). Таким образом, можно получить доступ к коллекции DiscretionaryAcl, членами которой являются Trustee, AccessMask, AceType, AceCount и не фигурирующий в данном шаблоне RemoveAcl:

Пользователь или группа, которым определяется уровень доступа

Определяет тип доступа (Allow, Deny, Audit)

Определяет уровень доступа к ресурсу ( Full Control , Modify , Read , Execute и т.д.)

Количество объектов, которым назначены права

Удаление существующего объекта (группы или пользователя)

После многочисленных экспериментов были установлены и сведены в таблицы значения различных параметров:

Как мы уже говорили, В VBS для работы с файловой системой существует FileSystemObject.

При помощи FSO можно работать с файлами. Алгоритм начала работы такой:

1. Объявляем переменную. Не обязательно такое же название, но оно наиболее логичное. А ещё, ваш код будет понятнее для других.

Dim FSO

2. Записываем в переменную FSO копию объекта FileSystemObject, который предназначен для работы с файловой системой Windows

Теперь, давайте ознакомимся с небольшим арсеналом методов:

Для получения доступа к файлу необходимо выполнить fso.GetFile(ПутьКФайлу) в какую либо переменную. Например:

Далее мы сможем выполнить для указанного файла следующее:

Так же мы можем:

Итак, работа с текстом.

Не забываем, что в любом случае код наш начнётся с

Dim FSO

Теперь, давайте рассмотрим наши возможности:

1. Создание текстового файла

Set File=FSO.CreateTextFile(полный_путь_к_файлу)

2. Открытие текстового файла

3. Чтобы добавлять в файл текст, нужно его открыть для записи

Set tf = tfile.OpenAsTextStream(ForWriting, True)

Теперь, давайте разберёмся, как записывать в файл текст. Для этого есть следующие методы:

Давайте приведём пример создания файла и записи в него текста.

ЗаписьВФайл

Теперь поговорим про чтение из файла:

Приведём пример считывания текста из файла:

Считывание текста из файла

А так же есть не менее полезные вещи:

Первые два метода можно использовать для условий того же Do While или Do Until. Например:

Do While Not File.AtEndOfLine

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

Задача1: Дан текстовый файл со списком литературы. Заменить определённые числа в нём и сохранить изменение.

Задача2: Создать текстовый файл, заполненный случайными символами. Вывести его содержимое.

Задача3: Дан текстовый файл, найти в нём какие-либо символы и вывести, в какой строке и на каком месте они стоят.

Задача4: Осуществить поиск директории и вывести процесс выполнения в новый текстовый файл, после чего вывести его содержимое.

VBS-скрипт - это мощное решение для автоматизации действий пользователя в системах семейства Windows. Такой тип сценариев обычно используется для:

  • создания сложных сценариев;
  • использования объектов из других приложений и библиотек;
  • скрытия окон в ходе выполнения сценария;
  • шифрования логики сценария.

В основном VBS-сценарии применяются для обработки данных, управления системой, работы с учетными записями пользователей и компьютеров, взаимодействия с офисными приложениями, работы с базами данными и прочих сложных задач.

В зависимости от языка сценария, содержания и шифрования встречаются такие типы скриптов:

  • vbs - Visual Basic Script
  • vbe - зашифрованный Visual Basic Script
  • js - Java Script
  • jse - зашифрованный Java Script
  • wsh - настройки скрипта
  • wsf - XML-интегрированный сценарий

В этой статье я буду рассматривать сценарии типа vbs.

Как уже было описано выше, сценарии не компилируются, а интерпретируются. То есть для обработки скрипта в системе должен присутствовать интерпретатор языка VBS, и таких интерпретатора в Windows есть даже две штуки: оконный WScript и консольный CScript - оба интерпритатора - это Windows Script Host (WSH).

По умолчанию все скрипты выполняются через WScript, то есть никаких настроек не требуется, но чтобы выполнить скрипт в окне консоли, необходимо запустить его через CScript, либо установить CScript как интерпретатор, используемый по умолчанию. Для этого в командной строке нужно выполнить следующее:

После чего все сценарии будут выполняться в режиме консоли. Возврат в оконный режим осуществляется следующей командой:

В Visual Basic работают следующие правила:

  • длина строки не ограничена;
  • регистр символов не учитывается;
  • количество пробелов между параметрами не учитывается;
  • строку команды можно разрывать, а на месте разрыва нужно вставлять символ " _ ";
  • максимальная длина имени переменной 255 символов;
  • комментарии обозначаются сиволом " ' ".

Рекомендуемая структура сценария:

Примечание. Здесь и далее в треугольных скобках указываются обязательные команды и параметры, значения которых изменяются в зависимости от контекста сценария. В квадратных скобках указываюся необязательные параметры.

По умолчанию переменные в сценариях объявляются автоматически при первом использовании в теле скрипта, если это не запрещено директивойOption Explicit. Если же в начале сценария объявить директиву Option Explicit, то все переменные нужно определять заранее с помощью следующих конструкций:

Константы объявляются в начале сценария с помощью конструкции:

Тип переменной присваивается автоматически после внесения в нее первого значения. В Visual Basic существуют следующие типы данных:

Данные можно проверять на соответствие типам, а так же переводить из одного типа в другой, если значения позволяют это сделать. Для операций над типами данных используются следующие команды:

Как было сказано выше, Visual Basic не накладывает строгих ограничений на имена переменных, но в то же время существуют рекомендации для названий переменных, чтобы в тексте сценария легко определять тип данных. Для этого перед именем переменной рекомендуется ставить условные символы, которые определяют тип переменной:

  • iValueName - числовые типы
  • sValueName - строковый тип
  • bValueName - логический тип
  • dValueName - дата
  • oValueName - объект
  • cValueName - константа
  • aArrayName - массив

В VBS-сценариях возможно использование массивов переменных, которые позволяют хранить списки, таблицы и даже более сложные конструкции. Одномерные массивы (списки) могут быть динамическими, то есть они позволяют изменять свою размерность в ходе работы сценария. Все массивы объявляются командой Dim:

Пример использования массивов

Прежде, чем пользоваться динамическим массивом, ему нужно указать текущую размерность с помощью команды ReDim, после чего массив можно переформировать в любом месте сценария, при этом либо очистить весь массив, либо сохранить старые значения ячеек командой Preserve:

Чтобы узнать размерность массива, обычно пользуются функцией UBound, которая будет рассмотрена ниже вместе с остальными функциями работы с данными.

Ни один полноценный сценарий не обходится без ветвлений, ветвления помогают выбрать верный путь при выполнении или невыполнении какого-то заложенного условия. Иными словами, ветвления реализуют логику сценария. В VBS-сценариях реализованы несколько механизмов ветвлений. Рассмотрим их по порядку.

Конструкция для одного действия, выполняемого по условию:

Конструкция для нескольких действий, выполняемых по условию:

Конструкция "развилка на несколько путей" (вариант сIf):

Во всех приведенных выше конструкциях применяется следующее правило: "Если выполняется условие <Condition>, то произвести список действий <Action>, которые расположеные под текущем блоком условия. Если текущее условие не выполняется, то перейти к списку действий <Action> под командой Else."

Конструкция "развилка на несколько путей" (вариант сSelect):

В данной конструкции работает правило: "Если значение переменной <Variable> равно значению <Significance>, то произвети список действий <Action> под этим значением, иначе перейти к проверке следующего значения <Significance>."

Для организации повторяющихся действий или перебора элементов массива обычно используются циклы. В VBS-сценариях организованы несколько видов циклов: обычный цикл, цикл с неизвестным количеством итераций, цикл по условию.

Обычный цикл организуется структурой For - Next, в аргументах которой задаются такие параметры как имя счетчика (<Counter>), начальное значение счетчика (<Start>), конечное значение счетчика (<Finish>) и, при необходимости, шаг счетчика (Step <StepSize>).

Если в процессе работы цикла потребуется прекратить перебор значений, то это можно сделать с помощью команды Exit For.

Цикл с неизвестным количеством итераций обычно применяется для перебора всех значений в коллекции объекта, когда не известна его размерность. Эта структура переберет все значения (<Variable>) массива, переданного как парамер цикла (<Array>).

Циклы с условиями применяются для обработки данных, при выполнении какого-то условия. Такие циклы бывают двух видов: с проверкой в начале цикла и с проверкой в конце.

Цикл, пока выполняется условие, с проверкой в начале

Цикл, пока не выполнится условие, с проверкой в начале

Как уже было сказано выше, условия можно ставить в конец цикла. В этом случае тело цикла будет выполнено как минимум один раз. Так же как и в обычных циклах, цикл с условием можно прервать командой Exit Do:

Чтобы работать с данными и строить свои процедуры и функции, разработчки Visual Basic уже позаботились об основе сценариев - базовых функциях. VBS-скрипты функции для работы с датами, строками и числами, а так же базовые процедуры ввода-вывода и процедуры работы с сетью. Давайте вкратце рассмотрим встроенные функции.

Функции обработки дат:

Функции обработки строк:

И, естественно, помимо упомянутых функций, сценарии поддерживают все простейшие математические и логические операции:

  • = - оператор присваивания;
  • + - сумма двух чисел;
  • - - вычитание двух чисел;
  • * - умножение двух чисел;
  • / - деление двух чисел;
  • \ - целочисленное деление двух чисел;
  • Mod - остаток от деления двух чисел;
  • ^ - возведение в степень;
  • & - соединение двух строк;
  • Is - сравнение двух объектов;
  • Eqv - сравнение двух выражений;
  • Not - логическая операция отрицания;
  • And - логическая операция конъюнкции;
  • Or - логическая операция дизъюнкции;
  • Xor - логическая операция исключения;
  • Imp - логическая операция импликации.

Очередность выполнения операций определяется как и во всех языках программирования: сначала выполняются операции в скобках, потом вычисляются функции, потом операции умножения и деления, следом идут сложение и вычитание, и завершают вычисление логические операции.

Сценарии, написанные на Visual Basic, позволяют определять пользовательские процедуры и функции и вызывать их из основной программы. Между процедурой и функцией практически нет никакого различия, разница заключется в логическом смысле этих подпрограмм: функции обычно используются для вычисления какого-то значения, а процедуры - для выполнения действий. Тем не менее и процедуры, и функции могут выполнять операции и передавать значения основной программе. Несмотря на это, все же не стоит забывать о предназначении этих подпрограмм: функции - для вычисления, процедуры - для действий.

Функция объявляется оператором Function, после которого следует название пользовательской функции, которое не должно совпадать ни с одним зарезервированным словом языка Visual Basic, далее указываются переменные, которые будут передаваться подпрограмме в качестве параметров - указание переменных в этой конструкции означает выделение ячеек памяти для переменных подпрограммы (объявление переменных для функции). В теле подпрограммы структура сценария ничем не отличается от обычной программы (здесь можно объявлять дополнительные переменные, поизводить операции, использовать другие функции и процедуры), в конце тела должен присутствовать оператор присвоения функции какому-то значению - это значение и будет возвращено основной программе. Прервать выполнение функции можно оператором Exit Function, но в этом случае нужно не забыть присвоить функции какое-то значение, иначе сценарий выдаст ошибку. Завершается функция оператором End Function.

Процедура определяется аналогично функции, но другим оператором -Sub. Так как процедура не возвращает основной программе никаких значений, то оператора присвоения перед выходом из процедуры нет. Прервать выполнение процедуры можно с помощью команды Exit Sub, а завершается вся конструкция оператором End Sub. Чтобы в основной программе вызвать процедуру, необходимо использовать ключевое слово Call и имя функции с необходимыми аргументами. (Ключевое словоCallне является обязательным, но я рекомендую его использовать чтобы избежать неправильных вызовов процедуры.)

Кстати, процедуры и функции должны располагаются в конце сценария.

Во время работы подпрограммы значения переменных основной части скрипта не изменяются, даже если в подпрограмме есть одноименные переменные. Чтобы подпрограмма имела возможность менять значения переменных основного сценария, необходимо в аргументах подпрограммы задать свойство переменных как ByRef. По умолчанию все переменные определяются со свойством ByVal.

В данном случае аргумент <Argument1> передается по ссылке на ячейку памяти - меняется значение переменной в основном сценарии. Иными словами, с помощью параметра ByRef процедура превращается в функцию - подпрограмма возвращает результат вычислений в основную программу.

По умолчанию все ошибки обрабатываются сценарием в автоматическом режиме, и, при возникновении ошибки, работа сценария останавливается. Для отключения автоматической обработки ошибок нужно использовать специальную директиву On Error Resume Next, которая отключает автоматическую обработку ошибок и продолжает работы сценария даже при их наличии. Для ручной обработки ошибок необходимо обратится к встроенному объектуErr, который хранит в себе статус ошибок. Объект Err имеет следующие свойства и методы:

Пример ручной обработки ошибки:

VBS-сценарии, как и их родитель - язык Visual Basic, является объектно-ориентированным языком программирования, то есть основной концепцией является понятие объектов и классов

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

Итак, чтобы работать с объектом, его нужно сначала создать, используя классы из нужной библиотеки:

Удалить объект можно, присвоив ему значение Nothing:

Все объекты, с которыми работает Windows Script Host, имеют методы и свойства. Чтобы обратиться к методу, необходимо указать объект, а через точку - метод с необходимыми параметрами.

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

Пример. Создание объекта файловой системы, обращение к методу создания папки, удаление объекта.

Обратите внимание, что понятие "объект" относится к логике сценария, а не к логике файловой системы. То есть, когда мы говорим "удаление объекта", мы имеем ввиду логический объект сценария, который никак не влияет на удаление каких-то частей файловой системы.

Чтобы узнать, какие существуют библиотеки в Вашей операционной системе, включенные в библиотеки классы, их методы и свойства, можно воспользоваться проводником объектов, например из Microsoft Word:

  1. Запустить MS Word.
  2. В главном меню выбрать Tools -> Macro -> Visual Bacis Editor
  3. В окне редактирования макросов выбрать View -> Object Browser

Если какая-то библиотека не отражена в списке, то ее можно подключить через меню Tools -> References.

В сценариях есть методы, не входящие ни в какой класс, они доступны непосредственно в теле сценария:

Методы и свойства корневого класса WScript, не требуют создания объекта - они автоматически доступны для использования непосредственно в теле сценария.

Применение этих методов и свойств более подробно мы разберем в примерах других классов.

Для работы с операционной системой используется специальный класс Shell, который позволяет выполнять такие операции как запуск программ, изменение реестра, создание ярлыков, доступ к системным папкам и системным переменным, доступ к системному журналу. Итак, методы и свойства класса Shell:

Пример. Использование методов и свойств класса Shell.

Как мы уже убедились, VBS-сценарии могут работать с оболочкой Windows, но это не единственная их возможность. С помощью класса Network можно получить доступ к сетевым объектам и управлять ими. Давайте подребнее разберем класс Network:

Пример. Использование методов и свойств класса Network.

Очень часто в сценариях встречаются такие случаи, когда необходимо что-то создать, удалить, переместить или изменить на диске компьютера. Эту задачу позволяет решить класс FileSystemObject, предназначенный для работы с файловой системой. Ниже перечисленны объекты, которые может создать этот класс:

  • FileSystemObject - главный объект, который позволяет создавать, удалять, управлять дисками, папками и файлами в общем;
  • Drive - объект, позволяюший собирать информацию о дисках системы;
  • Drives - объект, хранящий в себе список дисков системы;
  • Folder - объект, позволяющий создавать, удалять, перемещать папки, а также собирать информацию о них и их содержимом;
  • Folders - объект, хранящий в себе список подпапок указанной папки;
  • File - объект, позволяющий создавать, удалять, перемещать файлы, а также собирать информацию о них;
  • Files - объект, хранящий в себе список файлов указанной папки;
  • TextStream - объект, позволяющий читать и создавать текстовые файлы.

Методы и свойства класса FileSystemObject (главного объекта):

Объекты Drives, Folders и Files класса FileSystemObject хранят в себе информацию о дисках, папках и файлах и, в основном, используюся для сбора информации о файловой системе. Они имеют только два свойства:

Чтобы было более понятно, что же такое коллекция объектов, рассмотрим пример вывода на экран списка файлов корня диска C:

Объект Drive предоставляет доступ к свойствам локального или сетевого диска:

Объект Folder предоставляет доступ ко всем свойствам папки, а также позволяет производить над ней действия:

Объект File аналогичен объекту Folder - он предоставляет доступ ко всем свойствам файла, а также позволяет производить над ним действия:

Объект TextStream - это инструмент доступа к содержимому файла. С помощью него можно читать и изменять файл:

Мы познакомились со всеми методами и свойствами класса FileSystemObject, рассмотрим пример использования этого класса:

Данный сценарий предназначен для очистки системы от устаревших файлов во временных каталогах Windows и профилях пользователей. В этом примере можно увидеть как работают практически все вышеописанные конструкции: структура сценария, название переменных, работа с массивами и коллекциями, ручная обработка ошибок, считывание системных переменных, создание текстового файла журнала работы сценария, работа с файловой системой, использование процедур.

Итак, мы познакомились с основами сценариев Visual Basic Script. Давайте подведем итог, и определим достоинства и недостатки таких сценариев:

Вывести список пяти самых часто встречающихся расширений в указанной папке
Очень нужна помощь вот по какому вопросу: как найти и вывести список пяти самых часто.

Количество всех файлов в указанной папке
Скрипт, который находит количество всех файлов в указанной папке. Вывод осуществляется на экран.

Нахождение и вывод на экран количества всех файлов в указанной папке
Добрый день,форумчане. Нужна помощь с заданием. Требуется написать скрипт(на языке.

Вывод в файл информации о количестве файлов с расширением .bat в папке, указанной пользователем
Добрый вечер. Сижу ломаю голову как мне выполнить это задание: Вывод в файл.

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

вот, я накидал предварительно из разных частей, но вот как из первой функции вернуть путь, я пока не очень додумался и еще не разобрал последние три срочки

Немного не то.
Вопрос стоит в том, чтобы пользователь мог указать папку..
А еще.. файл с выводом нужно создать в том же месте, где находится исполняемый, а после выполнения скрипта еще и открыть.

перечитайте ваш самый первый пост
разве там все эти ваши пожелания имеются?
или, полагаете, всякий был должен сразу догадаться - в каком именно ухе у вас чешется?

научитесь изначально правильно ставить задачу (чтобы мне не было мучительно больно за бесцельно потраченное на вас время)

перечитайте ваш самый первый пост
разве там все эти ваши пожелания имеются?
или, полагаете, всякий был должен сразу догадаться - в каком именно ухе у вас чешется?

научитесь изначально правильно ставить задачу (чтобы мне не было мучительно больно за бесцельно потраченное на вас время)

1) путь к папке, которую юзер исследовать собирается, он должен прописать текстом в <input>?
или же нужен интерфейс выбора (типа проводника в Windows, где будут только папки и кнопка OK, доступная при выборе какой-то папки)?

2) имя для файла, куда результаты запишутся, должно быть каким-то постоянным (изначально заданным)?
или юзера каждый раз спрашивать надо и он это имя будет вводить в текстовое поле <input>?

3) и, так вы определились - какой вариант вам нужен: "системные описания типов файла" или "расширения"?

1) путь к папке, которую юзер исследовать собирается, он должен прописать текстом в <input>?
или же нужен интерфейс выбора (типа проводника в Windows, где будут только папки и кнопка OK, доступная при выборе какой-то папки)?

2) имя для файла, куда результаты запишутся, должно быть каким-то постоянным (изначально заданным)?
или юзера каждый раз спрашивать надо и он это имя будет вводить в текстовое поле <input>?

3) и, так вы определились - какой вариант вам нужен: "системные описания типов файла" или "расширения"?

по второму: возможно ли в именем файла записать дату его создания, например, 17-01-2013-15-00.txt ?

нужен вывод такой: размер файла(округление в большую сторону);расширение

для файлов можно вывести Date Created , Date Last Accessed и Date Last Modified

"округление в большую сторону" до чего?
до десятков байт?
до сотен байт?
до килобайт?

я хотел подчеркнуть нужное. больше так делать не буду

Необходимо окошко выбора папки. В листинге, который я привел выше, это выполняет функция fnShellBrowseForFolderJ(). см приложение

имя подойдет Date Created .

округление до килобайта.

прямо анекдот, честное слово: я у вас вынужден вымаливать рассказать мне о том, что вам нужно (не мне нужно, а именно вам!)
----------

1) спрашивал про интерфейс -- ответ от вас с третьего раза получил, слава Б-у
2) спрашивал про имя файла, куда будет записываться информация -- вашего ответа так и нет
3) спрашивал про расширение или системный тип -- вашего ответа так и нет
4) спрашивал про нужную вам дату для файла (создания, последнего изменения, последнего вызова) -- вашего ответа так и нет
5) спрашивал про округление -- ответ сразу получил, урряя!

мне кажется, вы проглядели мои ответы

2. про имя файла я отвечал в 7 посте. Если в общем, то имя файла должно содержать дату и время создания документа(текстового файла, куда будет записан результат работы скрипта);

3. именно расширение. Ответ также был в 7 посте, в сааааааамом конце;

4. и снова 7 пост! Имя файла: дата создания файла;

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

Читайте также: