Windows script file format

СТАТЬИ

про интернет, компьютеры, программное обеспечение

Windows Script Host (WSH) —
файловая система

Windows Script Host (WSH) | файл | скрипты

В этой статье речь пойдет о работе с объектами файловой системы, а именно, с самими файлами и локальными дисками (дисководы, жесткие диски, CD-ROM’ы). Сетевые диски будут рассмотрены в одной из следующих статей. Windows Script Host, WSH, файловая система, VBScript, скрипты. Приведу небольшой пример и на его основе объясню принципы работы с дисками в Windows Script Host. Если вы еще не отключили сообщение системы о том что какой-то диск переполнен, то, наверняка, уже не раз лицезрели его. Мерзкая штука! Оно вам надо? Давайте лучше сами создадим такое сообщение :).

Windows Script Host

Добавьте получившийся файл в автозагрузку и каждый раз при старте системы у вас будет проверяться наличие свободного места на диске. Как только его окажется меньше порогового значения, заданного вами (в примере 100 Мб), выскочит информационное окно, уведомляющее об этом. Windows Script Host, WSH, файловая система, VBScript, скрипты

Если вы не будете фильтровать тип диска (строка If i.DriveType=2), то объем свободного места будет проверяться и на дискете в дисководе и на CD-ROM’e. А если в приводе не будет носителя, то скрипт прервется и будет выдано сообщение об ошибке.

DriveType имеет следующие значения:

0 — Тип не может быть определен
1 — Сменный носитель или дисковод для гибких дисков
2 — Обычный HDD
3 — Сетевой диск
4 — CD-ROM
5 — Виртуальный RAM-диск

Остановимся подробнее на строке free = FormatNumber (fso.GetDrive(drive).FreeSpace /1048576, 1). Свойство FreeSpace возвращает количество свободного дискового места в байтах. Конечно, работать с такими большими цифрами некомфортно, поэтому мы переводим байты в мегабайты, делением на 1048576. А чтобы не лицезреть кучу знаков после запятой, округляем до одного значащего символа с помощью FormatNumber() — количество знаков после запятой устанавливается с помощью второй переменной.

Если вам надо получить полный объем диска, то вместо FreeSpace используйте свойство TotalSize.

Вы можете явно указать диск, с которым хотите работать. Для этого используется метод GetDrive:

Чтобы узнать файловую систему диска используйте свойство FileSystem:

Остальные свойства и методы работы с диском не так интересны. Среди них такие как:

DriveExists — проверяет на наличие заданного диска: fso.DriveExists(«c»).
IsReady — если диск готов к использованию, возвращает true, в противном случае — false.
RootFolder — возвращает путь к корневому каталогу.
SerialNumber — возвращает серийный номер диска.
ShareName — возвращает сетевое имя диска.
VolumeName — возвращает либо устанавливает метку диска.

Теперь обратим внимание на работу с файлами и папками. Редактирование файлов я бы хотел вынести в отдельную статью, а здесь коснемся вопросов создания, копирования, удаления файлов, установки атрибутов и т.п. Windows Script Host, WSH, файловая система, VBScript, скрипты

Для примера давайте создадим на диске С:\ папку TEST, а в ней файл test.txt:

Windows Script Host

Комментарии наглядно демонстрируют работу скрипта. Давайте только подробнее остановимся на создании файла (последняя строка). Вторым параметром передается

значение true. Этот параметр является необязательным и указывает, перезаписывать ли файл с таким именем. Здесь же может передаваться и третий параметр. Если он отсутствует или равен false, то файл будет создан в кодировке ASCII. Если параметр равен true — в unicode.

В примере мы не просто создали папку и файл, но и создали объекты этой папки и файла (Folder и File соответственно). Если надо создать объект для уже существующей папки/файла, используйте метод GetFile/GetFolder:

var File1 = fso.GetFile(«C:\\autoexec.bat»);

К этим объектам применимы различные методы, позволяющие копировать, переименовывать, удалять файлы, получать о них различные сведения, устанавливать атрибуты. Как несложно догадаться для копирования, перемещения и удаления файлов и папок применяются методы Copy, Move и Delete. При этом в Copy и Move передается имя файла, в который надо скопировать/перенести исходный, а в Delete ничего не передается. Так, чтобы скопировать autoexec.bat в autoexec.tmp надо добавить строку

Различные свойства объектов, созданных с помощью GetFile/GetFolder позволяют получить различные сведения о файлах и папках на которые они указывают. Вот эти свойства:

Size — возвращает размер файла/папки;
DateCreated — время создания;
DateLastAccessed — время последнего обращения к объекту;
DateLastModified — время последнего изменения.

Бывают ситуации, когда надо получить имя файла, на который ссылается объект. Например:

Windows Script Host

В зависимости от того, есть ли файл config.sys, объект File1 будет указывать на разные файлы. Конечно, в таком виде этот пример в реальной ситуации вряд ли встретится, но для иллюстрации неопределенности с файлом вполне подходит. Для определения имени файла (папки) и пути к нему служат еще несколько свойств:

Name — возвращает обычное имя файла (папки);
ShortName — короткое имя (в формате MS-DOS). Длинные имена будут урезаны до формата 8.3;
Path — возвращает обычный путь к файлу (папке);
ShortPath — короткий путь (с тильдой «

Читайте также:  Просмотр содержимого директории linux

«);
ParentFolder — возвращает имя родительского каталога.

Как они работают вы уже могли видеть в предыдущем примере в последней строке.

Закончить рассмотрение данной темы мне бы хотелось описанием установки атрибутов файлов/папок и получением сведений о типе файла. Тип файла возвращает свойство Type. Вызывается оно аналогично описанным ранее свойствам:

Если вы вызовите свойства файла по правому клику мышки, то на вкладке «Общие» в поле «Тип» будет как раз то описание, что возвращает это свойство. Windows Script Host, WSH, файловая система, VBScript, скрипты

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

В таблице приведены значения, которые может принимать данное свойство:

Константа Знач. Действие Описание
Normal 0 чтение/запись Обычный файл
ReadOnly 1 чтение/запись Только чтение
Hidden 2 чтение/запись Скрытый
System 4 чтение/запись Системный
Volume 8 только чтение Метка диска
Directory 16 только чтение Папка
Archive 32 чтение/запись Архивный
Compressed 128 только чтение Сжатый файл

Если вам надо установить несколько свойств файлу, значения надо складывать. Например чтобы установить для файла атрибуты только для чтения, скрытый и системный, надо передать значение 1+2+4=7:

На этом объяснения по работе с объектами файловой системы позвольте закончить :). В следующей статье будут подняты вопросы чтения и редактирования файлов.

Объект File — работа с файлами Windows

Всем привет, и снова с вами автор блога scriptcoding.ru. В этой публикации мы рассмотрим работу с файлами Windows программными средствами, с помощью сценариев Windows Script Host.

Работа с файлами Windows средствами Windows Script Host осуществляется с помощью объекта File и коллекции Files. Что бы получить доступ к классу _File_ используется метод GetFile объекта FileSystemObject. При работе с файлами для доступа к коллекции Files используется одноименное свойства объекта Folder.

Давайте рассмотрим соответствующие свойства и методы класса _File_.

Свойства объекта File – работа с файлами Windows

Attributes – Данное свойство дает возможность просмотреть или изменить атрибуты. Виды атрибутов, в скобках указано цифровое значение:

  • Normal – Обычный, без установленных атрибутов (0).
  • Readonly — Только чтение (1).
  • Hidden — Скрытый (2).
  • System – Системный (4).
  • Directory — Папка или каталог (возможно, с атрибутом «только для чтения») (16).
  • Archive – Архивный (32).
  • Alias — Ярлык (1024).
  • Compressed – Сжатый (только для Windows NT/2000) (2048).

Пользователь может комбинировать значения констант для свойства Attributes.

DateCreated – Дата и время создания. Только_чтение.

DateLastAccessed — Дата и время последнего обращения. Только_чтение.

DateLastModified — Дата и время последней модификации документа. Доступно только для чтения

Drive – Буква диска для устройства, на котором лежит документ. Только_чтение.

Name – При работе с файлами позволяет просмотреть или изменить их имя. Чтение_и_запись

ParentFolder – Возвращает путь к каталогу, в котором лежит документ. Только чтение.

Path — Путь к документу

ShortName — Короткое имя (например, 233_6E

ShortPath — Короткий путь (например, C:\work\233_6E

Size — Размер в байтах

Type – Позволяет получить информацию о типе.

Методы объекта File – работа с Windows файлами

Copy (destination [, overwrite]) – При работе с файлами Windows позволяет произвести его копирование в заданное место, destination задает файл, в который будет производиться копирование, нельзя использовать подстановочные символы (*,? и так далее), overwrite: значение TRUE – произвести замену, FALSE – нет. Вместо метода Сору можно использовать метод CopyFile.

Delete ([force]) – Позволяет удалить документ. Если параметр force равен false или не указан, то с помощью данного метода будет нельзя удалить элемент с атрибутом «только для чтения» (read-only), установка для force значения true позволит сразу удалять такие элементы. Вместо метода Delete можно использовать метод DeleteFile (FileSystemObject).

Move (destination) – При работе с файлом Windows, метод позволяет переместить его в другое место, destination определяет место назначения; подстановочные знаки в имени недопустимы. Вместо метода Move можно использовать MoveFile (FileSystemObject).

OpenAsTextStream ([iomode, [format] ]) – Открывает файл, метод вернет класс TextStream, используя который можно производить чтение, запись или добавление данных в текстовый файл, iomode задает режим ввода/вывода и может принимать те же значения, что и одноименный параметр в методе OpenTextFile, format определяет формат (ASCII (0) или Unicode(1)). Открыть текстовый файл для чтения можно также с помощью метода OpenTextFile (FileSystemObject).

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

Первый сценарий написан на языке VBScript, а второй на языке JScript, по умолчанию анализируется C:\\Autoexec.bat, но вы можете изменить это значение или просто перетянуть документ на значок сценария.

Пример на языке vbscript:

Пример на языке JScript:

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

Читайте также:  0x000003e3 windows 10 принтер

Спасибо за внимание. Автор блога Владимир Баталий

Windows Script Host: типы файлов

Компонент Windows Script Host (WSH) является мощным, полезным и гибким средством для выполнения сценариев в среде Windows, но при этом он представляет собой довольно сложный инструмент. Для начала я расскажу о том, что такое WSH и какие механизмы предоставляет данный компонент для выполнения сценариев в Windows. Затем мы рассмотрим различные типы файлов сценариев и способы их запуска. В следующих статьях я расскажу об особенностях формата файлов .wsc и объясню, что такое компоненты сценариев Windows (Windows Script Components (WSC)).

Что такое WSH?

WSH — это компонент Windows, предоставляющий среду для выполнения сценариев на уровне операционной системы (в отличие от некоторых других контекстов, таких как Web-браузер). WSH не является языком, как, например, Perl, или интерпретатором сценариев, как perl.exe, он представляет собой построенный на базе технологии COM сервер, предназначенный для выполнения сценариев в Windows. В операционных системах версии Windows 2000 и более новых версиях WSH является встроенным компонентом. Для более ранних платформ, таких как Windows NT 4.0 и Windows 98, данный компонент может быть загружен с Web-сайта Microsoft и установлен отдельно.

В WSH имеется две стандартные среды исполнения: VBScript и JScript. VBScript обычно используется при разработке сценариев, предназначенных для решения задач системного администрирования, а JScript (реализация JavaScript от Microsoft) чаще применяется в Web-браузерах, поскольку JavaScript поддерживает широкий спектр различных платформ. В зависимости от типа решаемых задач для разработки сценариев на базе WSH пригодны оба языка. Если в системе установлены соответствующие исполнительные механизмы для поддержки других языков, то сценарии, разработанные на этих языках, также могут выполняться через WSH.

В WSH имеется стандартный набор объектов, предоставляющих весьма полезные возможности. Некоторые из этих объектов, например объект WScript и связанные с ним объекты и коллекции, могут существовать только в сценариях, выполняемых через WSH (т.е. метод WScript.Echo не может быть использован в секции сценариев Web-страницы). Однако многие из этих объектов являются универсальными и могут применяться в любых совместимых с COM языках программирования.

Существует два основных типа сценариев WSH: автономные сценарии (т.е. ориентированные на конкретный язык) и файлы .wsf (Windows script file). Файлы автономных сценариев имеют расширения, зависящие от типа языка, например, .vbs (VBScript) или .js (JScript). Что же касается сценариев .wsf, то они являются текстовыми файлами формата XML, нейтральными по отношению к тому или иному языку, и предоставляют ряд возможностей, которых лишены автономные сценарии. В WSH имеется два сервера сценариев, WScript и CScript, которые будут кратко рассмотрены далее. Здесь также имеется технология WSC, ранее известная как серверные сценарии, с помощью которой в сценариях можно создавать свои COM-компоненты.

Серверы сценариев

Сценарии WSH могут выполняться двумя способами: через сервер WScript, поддерживающий графический интерфейс пользователя, и через консольный сервер сценариев CScript. Серверы сценариев реализованы в виде двух исполняемых файлов: wscript.exe и cscript.exe, соответственно. По умолчанию в Windows используется сервер WScript, но эту установку можно изменить. О том, как это делается, мы поговорим чуть ниже.

При запуске сценария через CScript результаты выполнения команд WScript.Echo и сообщения об ошибках периода выполнения будут отображаться в окне консоли (т.е. окне командной строки). Если сценарий запускается через CScript в окне командной строки, то результаты его выполнения и сообщения об ошибках будут отображаться в этом же окне. Если же сценарий запускается через CScript, но из графического интерфейса (например, из проводника Windows или диалогового окна Run («Выполнить»)), то в этом случае создается временное окно командной строки, в котором и будет выполняться сценарий. Выходные данные сценария и сообщения об ошибках будут отображаться в этом временном окне, которое закроется по завершении выполнения сценария.

В отличие от CScript, сервер WScript не использует для выполнения сценариев консольное окно. Поэтому в данном случае результаты выполнения команд Wscript.Echo и сообщения об ошибках будут отображаться в виде стандартных окон сообщений среды Windows.

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

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

Параметры командной строки приведены в Таблице 1. Обратите внимание, что при указании в командной строке параметров сервера сценариев перед ними необходимо вводить символы двойного прямого слеша (//), что позволяет предотвратить путаницу с ключами командной строки пользовательских сценариев, где используется одинарный символ прямого слеша (/). Например, если требуется установить CScript в качестве используемого по умолчанию сервера сценариев, а также отключить вывод логотипа и сохранить данную конфигурацию для текущего пользователя, можно запустить из командной строки следующую команду:

Читайте также:  Что такое windows oid

Если были сделаны эти установки по умолчанию, то вам уже не потребуется набирать команду cscript при запуске сценариев из командной строки, сообщение об авторских правах Microsoft также выводиться не будет. Обычно я рекомендую выполнять подобную настройку, поскольку большинство сценариев (в том числе многие административные сценарии, предлагаемые Microsoft) требуют использовать CScript в качестве сервера. Также следует отметить, что некоторые из свойств объекта WScript (не путать с сервером сценариев WScript!) существуют только тогда, когда активным сервером сценариев является CScript.

Если при запуске имя сервера сценариев указывается в явном виде (т.е. команда запуска начинается со слова CScript или WScript), то также необходимо указывать и расширение файла сценария. Например, показанная ниже команда

работать не будет, а команда:

выполнится успешно (при этом, разумеется, предполагается, что файл сценария hello.vbs имеется в текущем каталоге). Если в командной строке набирается только имя сценария без указания сервера сценариев или расширения, то сценарий будет запущен через сервер, используемый в системе по умолчанию.

Для того чтобы определить, какой именно сервер сценариев используется по умолчанию в данный момент в вашей системе, щелкните в проводнике Windows правой кнопкой мыши на имени любого файла сценариев и посмотрите на появившееся контекстное меню. Если в нем жирным шрифтом выделен пункт Open with Command Prompt («Открыть в командной строке»), то система использует по умолчанию CScript. Если же жирным шрифтом выделен пункт Open, тогда используемым по умолчанию является сервер WScript.

Свойства файла сценариев

Свойства файла сценариев доступны через соответствующее диалоговое окно, которое можно вызвать, щелкнув правой кнопкой мыши на имени сценария в проводнике Windows и выбрав из контекстного меню пункт «Свойства» (Properties). Затем следует перейти к закладке Script, которая показана на экране 1. Два параметра, доступные на этой вкладке, соответствуют двум параметрам командной строки: ключам //T и //Logo (или //Nologo). Если выбрать любой из этих параметров и нажать OK, Windows создаст в одном каталоге с файлом сценария файл .wsh с именем, соответствующим имени сценария (т.е. .wsh). Это обычный текстовый файл, содержащий описание выбранных параметров, пример его содержимого показан на экране 2. Имеющийся в файле .wsh параметр BatchMode не может устанавливаться через графический интерфейс и соответствует параметру командной строки //B. Если его значение равно нулю (установка по умолчанию), то соответствующий сценарий будет запускаться в интерактивном режиме (//I); если же этот параметр установлен в единицу, тогда сценарий запустится в пакетном режиме (что соответствует параметру командной строки //B). Если нужно использовать эту установку, откройте файл .wsh в Блокноте (Notepad) или аналогичном текстовом редакторе и добавьте соответствующую настройку.

Использование файла .wsh — это единственный способ запуска сценария с предустановленными параметрами выполнения. При открытии файла .wsh соответствующий ему файл сценария запускается через сервер WScript. Довольно странно, что параметр командной строки //H не изменяет используемый по умолчанию сервер сценариев для файлов .wsh. Если нужно из графического интерфейса запустить на выполнение файл .wsh через сервер CScript, щелкните правой кнопкой мыши на имени соответствующего файла и выберите из контекстного меню пункт Open with Command Prompt («Открыть в командной строке»). После этого наберите в окне командной строки:

В файле .wsh содержится полное описание пути к соответствующему файлу сценария, поэтому если перенести файл .wsh в какое-либо другое место, то через него по-прежнему можно будет вызывать требуемый сценарий. Следует отметить, что создание файлов .wsh не является строго обязательным, поскольку для запуска сценариев на выполнение с необходимыми установками всегда можно воспользоваться соответствующими параметрами командной строки для CScript или WScript.

Расширения файлов WSH

В Таблице 2 приведен перечень стандартных расширений для файлов, используемых WSH. Автономные файлы сценариев имеют расширения .js или .vbs. Файлы, реализованные на языках, соответствующих каким-либо другим средам выполнения сценариев Active X, имеют собственные расширения (например, .pl для Perl и .py для Python). Автономные сценарии используются чаще всего, поскольку являются наиболее простыми для разработки.

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

Я надеюсь, что приведенные здесь сведения помогут внести ясность в понимание назначения компонента WSH и расширений для используемых им файлов. В следующей статье мы рассмотрим файлы .wsf и те дополнительные возможности, которые они предоставляют, по сравнению с автономными сценариями.

Таблица 1. Параметры командной строки для CScript и WScript

Оцените статью