Всем привет, и снова с вами автор блога 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~3 ).
ShortPath — Короткий путь (например, C:work233_6E~3 ).
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:
' ************************************************************************** ' Класс File ' Работа с файлами Windows ' rabota-s-fajlami.vbs ' ******************************************************************************** Option Explicit Dim fso, oFile, objArgs, Text1, attrib, file, title Title = "Работа с Windows файлами" ' документ для анализа file = "C:\Autoexec.bat" Set objArgs = WScript.Arguments ' В качестве анализа можно просто перетянуть документ на значок сценария If objArgs.Count > 0 Then file = objArgs(0) Set fso = WScript.CreateObject("Scripting.FileSystemObject") ' Проверяем, существует ли файл If fso.FileExists(file) Then Set oFile = fso.GetFile(file) ' Получаем информацию Text1 = "Документ: " & vbTab & oFile.Name & vbCrLf & "Создан: " & vbTab & oFile.DateCreated & vbCrLf & "Изменен: " & vbTab & oFile.DateLastModified & vbCrLf & "Последнее обращение: " & vbTab & oFile.DateLastAccessed & vbCrLf & "Атрибуты " & vbTab attrib = oFile.Attributes ' Это атрибут "только для чтения". If (attrib And &H01) > 0 Then Text1 = Text1 & "r " ' "скрытый". If (attrib And &H02) > 0 Then Text1 = Text1 & "h " ' "системный". If (attrib And &H04) > 0 Then Text1 = Text1 & "s " ' "архивный". If (attrib And &H20) > 0 Then Text1 = Text1 & "a " ' "сжатый". If (attrib And &H800) > 0 Then Text1 = Text1 & "c " MsgBox Text1, vbOKOnly + vbInformation, Title Else WScript.Echo "Ошибка " & file & " не найден" End If |
Пример на языке JScript:
// ************************************************************************** // Класс File // Работа с файлами Windows // rabota-s-fajlami.js // ******************************************************************************** // документ для анализа var file = "C:\\Autoexec.bat"; var Title = "Работа с Windows файлами"; var vbOKOnly = 0; var vbInformation = 64; var Text; var objArgs = WScript.Arguments; var attrib; // В качестве анализа можно просто перетянуть документ на значок сценария if (objArgs.length > 0) file = objArgs(0); var fso = WScript.CreateObject("Scripting.FileSystemObject"); WshShell = WScript.CreateObject("WScript.Shell"); // Проверяем, существует ли файл if (!fso.FileExists(file)) { WScript.Echo("Ошибка ", file, " не найден"); WScript.Quit(1); } var j = fso.GetFile(file); // Получаем информацию Text = "Документ: \t\t" + j.name + "\n" + "Создан: \t\t" + j.DateCreated + "\n"+ "Изменен: \t\t" + j.DateLastModified + "\n"+ "Последнее обращение: \t" + j.DateLastAccessed + "\n"; // Декодировать атрибуты. Text += "Атрибуты \t\t"; attrib = j.Attributes; if ((attrib & 0x01) != 0) Text += "r "; if ((attrib & 0x02) != 0) Text += "h "; if ((attrib & 0x04) != 0) Text += "s "; if ((attrib & 0x20) != 0) Text = "a "; if ((attrib & 0x800) != 0) Text += "c "; WshShell.Popup(Text,0,Title, vbOKOnly + vbInformation); |
И так, программирование примеров закончено, теперь давайте рассмотрим сам программный код. По сути, вся работа с Windows файлами заключается в анализе Autoexec.bat, но это по умолчанию, так как сценарии обрабатывают передаваемые параметры, поэтому мы можем перетянуть на значок скрипта любой другой документ для его анализа. В конечно итоге будет выводится базовая информация: тип, дата создания, дата изменения и так далее.