Другие части:
1С и WSH и WMI. ОТ ТЕОРИИ К ПРАКТИКЕ. Часть I: //infostart.ru/public/165702/
1С и WSH и WMI. ОТ ТЕОРИИ К ПРАКТИКЕ. Часть III: //infostart.ru/public/166440/
Практическая реализация:
Обработка 1С:Системный Администратор (WSH&WMI): //infostart.ru/public/172189/
ТЕОРИЯ
Microsoft Windows Script Host (WSH) - сервер сценариев Windows.
Используется в качестве инструмента разработки и выполнения специальных сценариев для операционной системы Windows.
Сценарии WSH пишутся на специализированных языках: Microsoft Visual Basic Script Edition (VBScript) или Microsoft JScript.
Свойства и методы объектов Microsoft WSH доступны также в приложениях, способных выступить в роли OLE-клиента.
WSH позволяет работать с:
- Файловой системой;
- Ресурсами локальной сети;
- Реестром;
- Специальными папками и ярлыками Windows;
- Процессами. Запускать и контролировать их выполнение.
WSH позволяет взаимодействовать с Microsoft ActiveX:
- ActiveX Data Object (ADO) — Доступ к базам данных;
- Active Directory Service Interface (ADSI) — Службы каталогов;
- Windows Management Instrumentation (WMI) — Инструментарий управления Windows.
Подробно свойства и методы объектов MS Windows Script Host изложены в файле Automation.chm, доступном в ссылках на скачивание.
Windows Management Instrumentation (WMI) - инструментарий управления Windows.
WMI - это одна из базовых технологий для централизованного наблюдения и управления компьютерной инфраструктуры под управлением платформы Windows.
WMI – это расширенная и адаптированная компанией Microsoft реализация стандарта WBEM (WebBased Enterprise Management) компании DMTF Inc.
Основа WBEM - Common Information Model (CIM), реализующая объектно-ориентированный подход к представлению компонентов системы.
WMI позволяет работать с:
- Системой;
- Приложениями;
- Оборудованием;
- Сетями;
др. управляемыми компонентами.
Подробно о Windows Management Instrumentation (англ.): http://msdn.microsoft.com/en-us/library/windows/desktop/aa394572%28v=vs.85%29.aspx
ПРАКТИКА
Список процедур и функций:
- GetDriveInfo() - Ф., позволяющая получить информацию о дисковой подсистеме лок. компьютера.- Computer_PhysicalDisk() - Ф., позволяющая получить информацию о физических дисках лок./уд. компьютера.- Computer_LogicalDisk() - Ф., позволяющая получить информацию о логических дисках лок./уд. компьютера.- GetFolderInfo() - Ф., позволяющая получить значения атрибутов каталога лок. компьютера.- GetFileInfo() - Ф., позволяющая получить значения атрибутов файла лок. компьютера.- ПрочитатьТекстовыйФайл() - Ф.: Пример чтения текстового файла.- СоздатьТекстовыйФайл() - Ф.: Пример создания файла (с проверкой: перезаписать/не перезаписать существующий файл).- СоздатьЯрлыкБлокнотНаРабочемСтоле() - Ф. создает ярлык "Блокнот" на рабочем столе.- МоиДокументы() - Ф. возвращает путь к папке пользователя "Мои документы".// Функция, позволяющая получить информацию о дисковой подсистеме локального компьютера.
//
&НаСервереБезКонтекста
Функция GetDriveInfo()
DriveInfo = Новый ТаблицаЗначений;
// Буква диска (C, D, ...).
DriveInfo.Колонки.Добавить("DriveLetter");
// Тип диска.
// 0 = Unknown, 1 = Removable, 2 = Fixed, 3 = Network, 4 = CD-ROM, 5 = RAM Disk.
DriveInfo.Колонки.Добавить("DriveType");
// Тип файловой системы диска.
DriveInfo.Колонки.Добавить("FileSystem");
// Метка тома.
DriveInfo.Колонки.Добавить("VolumeName");
// Полный размер диска.
DriveInfo.Колонки.Добавить("TotalSize");
// Свободное пространство на диске.
DriveInfo.Колонки.Добавить("FreeSpace");
// Готовность устройства (имеет смысл для съемных дисков или CD/DVD).
DriveInfo.Колонки.Добавить("IsReady");
// Путь до указанного диска (C:, D:, ...).
DriveInfo.Колонки.Добавить("Path");
// Корневой каталог диска.
DriveInfo.Колонки.Добавить("RootFolder");
// Серийный номер диска.
DriveInfo.Колонки.Добавить("SerialNumber");
// Сетевой путь диска или "" для локального.
DriveInfo.Колонки.Добавить("ShareName");
Попытка
FileSystemObject = Новый COMОбъект("Scripting.FileSystemObject");
FileSystemObject_HARD = FileSystemObject.Drives;
Для Каждого HARD ИЗ FileSystemObject_HARD Цикл
DriveInfoRecord = DriveInfo.Добавить();
DriveInfoRecord.DriveLetter = HARD.DriveLetter;
DriveInfoRecord.DriveType = HARD.DriveType;
DriveInfoRecord.IsReady = HARD.IsReady;
Если HARD.IsReady Тогда
DriveInfoRecord.FileSystem = HARD.FileSystem;
DriveInfoRecord.VolumeName = HARD.VolumeName;
DriveInfoRecord.TotalSize = HARD.TotalSize;
DriveInfoRecord.FreeSpace = HARD.FreeSpace;
DriveInfoRecord.Path = HARD.Path;
DriveInfoRecord.RootFolder = HARD.RootFolder.Path;
DriveInfoRecord.SerialNumber = Строка(HARD.SerialNumber);
DriveInfoRecord.ShareName = HARD.ShareName;
КонецЕсли;
КонецЦикла;
Исключение
КонецПопытки;
Возврат DriveInfo;
КонецФункции
// Функция, позволяющая получить информацию о физических дисках локального/удаленного компьютера.
// Параметры:
// Computer - Имя компьютера.
// Возвращаемое значение:
// Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
// Подробности на странице: //infostart.ru/public/165702
//
&НаСервереБезКонтекста
Функция Computer_PhysicalDisk(Computer = ".")
Win32_PhysicalDiskInfo = Новый ТаблицаЗначений;
Win32_PhysicalDiskInfo.Колонки.Добавить("Availability");
Win32_PhysicalDiskInfo.Колонки.Добавить("BytesPerSector");
Win32_PhysicalDiskInfo.Колонки.Добавить("Capabilities");
Win32_PhysicalDiskInfo.Колонки.Добавить("CapabilityDescriptions");
Win32_PhysicalDiskInfo.Колонки.Добавить("Caption");
Win32_PhysicalDiskInfo.Колонки.Добавить("CompressionMethod");
Win32_PhysicalDiskInfo.Колонки.Добавить("ConfigManagerErrorCode");
Win32_PhysicalDiskInfo.Колонки.Добавить("ConfigManagerUserConfig");
Win32_PhysicalDiskInfo.Колонки.Добавить("CreationClassName");
Win32_PhysicalDiskInfo.Колонки.Добавить("DefaultBlockSize");
Win32_PhysicalDiskInfo.Колонки.Добавить("Description");
Win32_PhysicalDiskInfo.Колонки.Добавить("DeviceID");
Win32_PhysicalDiskInfo.Колонки.Добавить("ErrorCleared");
Win32_PhysicalDiskInfo.Колонки.Добавить("ErrorDescription");
Win32_PhysicalDiskInfo.Колонки.Добавить("ErrorMethodology");
Win32_PhysicalDiskInfo.Колонки.Добавить("Index");
Win32_PhysicalDiskInfo.Колонки.Добавить("InstallDate");
Win32_PhysicalDiskInfo.Колонки.Добавить("InterfaceType");
Win32_PhysicalDiskInfo.Колонки.Добавить("LastErrorCode");
Win32_PhysicalDiskInfo.Колонки.Добавить("Manufacturer");
Win32_PhysicalDiskInfo.Колонки.Добавить("MaxBlockSize");
Win32_PhysicalDiskInfo.Колонки.Добавить("MaxMediaSize");
Win32_PhysicalDiskInfo.Колонки.Добавить("MediaLoaded");
Win32_PhysicalDiskInfo.Колонки.Добавить("MediaType");
Win32_PhysicalDiskInfo.Колонки.Добавить("MinBlockSize");
Win32_PhysicalDiskInfo.Колонки.Добавить("Model");
Win32_PhysicalDiskInfo.Колонки.Добавить("Name");
Win32_PhysicalDiskInfo.Колонки.Добавить("NeedsCleaning");
Win32_PhysicalDiskInfo.Колонки.Добавить("NumberOfMediaSupported");
Win32_PhysicalDiskInfo.Колонки.Добавить("Partitions");
Win32_PhysicalDiskInfo.Колонки.Добавить("PNPDeviceID");
Win32_PhysicalDiskInfo.Колонки.Добавить("PowerManagementCapabilities");
Win32_PhysicalDiskInfo.Колонки.Добавить("PowerManagementSupported");
Win32_PhysicalDiskInfo.Колонки.Добавить("SCSIBus");
Win32_PhysicalDiskInfo.Колонки.Добавить("SCSILogicalUnit");
Win32_PhysicalDiskInfo.Колонки.Добавить("SCSIPort");
Win32_PhysicalDiskInfo.Колонки.Добавить("SCSITargetId");
Win32_PhysicalDiskInfo.Колонки.Добавить("SectorsPerTrack");
Win32_PhysicalDiskInfo.Колонки.Добавить("Signature");
Win32_PhysicalDiskInfo.Колонки.Добавить("Size");
Win32_PhysicalDiskInfo.Колонки.Добавить("Status");
Win32_PhysicalDiskInfo.Колонки.Добавить("StatusInfo");
Win32_PhysicalDiskInfo.Колонки.Добавить("SystemCreationClassName");
Win32_PhysicalDiskInfo.Колонки.Добавить("SystemName");
Win32_PhysicalDiskInfo.Колонки.Добавить("TotalCylinders");
Win32_PhysicalDiskInfo.Колонки.Добавить("TotalHeads");
Win32_PhysicalDiskInfo.Колонки.Добавить("TotalSectors");
Win32_PhysicalDiskInfo.Колонки.Добавить("TotalTracks");
Win32_PhysicalDiskInfo.Колонки.Добавить("TracksPerCylinder");
Попытка
WinMGMT = ПолучитьCOMОбъект("winmgmts:\\" + Computer + "\root\cimv2");
Win32_PhysicalDisk = WinMGMT.ExecQuery("SELECT * from Win32_DiskDrive");
Для Каждого PhysicalDisk ИЗ Win32_PhysicalDisk Цикл
PhysicalDiskInfo = Win32_PhysicalDiskInfo.Добавить();
PhysicalDiskInfo.Availability = PhysicalDisk.Availability;
PhysicalDiskInfo.BytesPerSector = PhysicalDisk.BytesPerSector;
PhysicalDiskInfo.Capabilities = PhysicalDisk.Capabilities;
PhysicalDiskInfo.CapabilityDescriptions = PhysicalDisk.CapabilityDescriptions;
PhysicalDiskInfo.Caption = PhysicalDisk.Caption;
PhysicalDiskInfo.CompressionMethod = PhysicalDisk.CompressionMethod;
PhysicalDiskInfo.ConfigManagerErrorCode = PhysicalDisk.ConfigManagerErrorCode;
PhysicalDiskInfo.ConfigManagerUserConfig = PhysicalDisk.ConfigManagerUserConfig;
PhysicalDiskInfo.CreationClassName = PhysicalDisk.CreationClassName;
PhysicalDiskInfo.DefaultBlockSize = PhysicalDisk.DefaultBlockSize;
PhysicalDiskInfo.Description = PhysicalDisk.Description;
PhysicalDiskInfo.DeviceID = PhysicalDisk.DeviceID;
PhysicalDiskInfo.ErrorCleared = PhysicalDisk.ErrorCleared;
PhysicalDiskInfo.ErrorDescription = PhysicalDisk.ErrorDescription;
PhysicalDiskInfo.ErrorMethodology = PhysicalDisk.ErrorMethodology;
PhysicalDiskInfo.Index = Строка(PhysicalDisk.Index);
PhysicalDiskInfo.InstallDate = PhysicalDisk.InstallDate;
PhysicalDiskInfo.InterfaceType = PhysicalDisk.InterfaceType;
PhysicalDiskInfo.LastErrorCode = PhysicalDisk.LastErrorCode;
PhysicalDiskInfo.Manufacturer = PhysicalDisk.Manufacturer;
PhysicalDiskInfo.MaxBlockSize = PhysicalDisk.MaxBlockSize;
PhysicalDiskInfo.MaxMediaSize = PhysicalDisk.MaxMediaSize;
PhysicalDiskInfo.MediaLoaded = PhysicalDisk.MediaLoaded;
PhysicalDiskInfo.MediaType = PhysicalDisk.MediaType;
PhysicalDiskInfo.MinBlockSize = PhysicalDisk.MinBlockSize;
PhysicalDiskInfo.Model = PhysicalDisk.Model;
PhysicalDiskInfo.Name = PhysicalDisk.Name;
PhysicalDiskInfo.NeedsCleaning = PhysicalDisk.NeedsCleaning;
PhysicalDiskInfo.NumberOfMediaSupported = PhysicalDisk.NumberOfMediaSupported;
PhysicalDiskInfo.Partitions = PhysicalDisk.Partitions;
PhysicalDiskInfo.PNPDeviceID = PhysicalDisk.PNPDeviceID;
PhysicalDiskInfo.PowerManagementCapabilities = PhysicalDisk.PowerManagementCapabilities;
PhysicalDiskInfo.PowerManagementSupported = PhysicalDisk.PowerManagementSupported;
PhysicalDiskInfo.SCSIBus = PhysicalDisk.SCSIBus;
PhysicalDiskInfo.SCSILogicalUnit = PhysicalDisk.SCSILogicalUnit;
PhysicalDiskInfo.SCSIPort = PhysicalDisk.SCSIPort;
PhysicalDiskInfo.SCSITargetId = PhysicalDisk.SCSITargetId;
PhysicalDiskInfo.SectorsPerTrack = PhysicalDisk.SectorsPerTrack;
PhysicalDiskInfo.Signature = PhysicalDisk.Signature;
PhysicalDiskInfo.Size = PhysicalDisk.Size;
PhysicalDiskInfo.Status = PhysicalDisk.Status;
PhysicalDiskInfo.StatusInfo = PhysicalDisk.StatusInfo;
PhysicalDiskInfo.SystemCreationClassName = PhysicalDisk.SystemCreationClassName;
PhysicalDiskInfo.SystemName = PhysicalDisk.SystemName;
PhysicalDiskInfo.TotalCylinders = PhysicalDisk.TotalCylinders;
PhysicalDiskInfo.TotalHeads = PhysicalDisk.TotalHeads;
PhysicalDiskInfo.TotalSectors = PhysicalDisk.TotalSectors;
PhysicalDiskInfo.TotalTracks = PhysicalDisk.TotalTracks;
PhysicalDiskInfo.TracksPerCylinder = PhysicalDisk.TracksPerCylinder;
КонецЦикла;
Исключение
КонецПопытки;
Возврат Win32_PhysicalDiskInfo;
КонецФункции
// Функция, позволяющая получить информацию о логических дисках локального/удаленного компьютера.
// Параметры:
// Computer - Имя компьютера.
// Возвращаемое значение:
// Таблица значений.
//
// Рекомендация:
// Перед применением проверить на компьютерах
// Windows Management Instrumentation (WMI):
// 1. Состояние служб.
// 2. Разрешение в брандмауэре.
// Подробности на странице: //infostart.ru/public/165702
//
&НаСервереБезКонтекста
Функция Computer_LogicalDisk(Computer = ".")
Win32_LogicalDiskInfo = Новый ТаблицаЗначений;
Win32_LogicalDiskInfo.Колонки.Добавить("Access");
Win32_LogicalDiskInfo.Колонки.Добавить("Availability");
Win32_LogicalDiskInfo.Колонки.Добавить("BlockSize");
Win32_LogicalDiskInfo.Колонки.Добавить("Caption");
Win32_LogicalDiskInfo.Колонки.Добавить("Compressed");
Win32_LogicalDiskInfo.Колонки.Добавить("ConfigManagerErrorCode");
Win32_LogicalDiskInfo.Колонки.Добавить("ConfigManagerUserConfig");
Win32_LogicalDiskInfo.Колонки.Добавить("CreationClassName");
Win32_LogicalDiskInfo.Колонки.Добавить("Description");
Win32_LogicalDiskInfo.Колонки.Добавить("DeviceID");
Win32_LogicalDiskInfo.Колонки.Добавить("DriveType");
Win32_LogicalDiskInfo.Колонки.Добавить("ErrorCleared");
Win32_LogicalDiskInfo.Колонки.Добавить("ErrorDescription");
Win32_LogicalDiskInfo.Колонки.Добавить("ErrorMethodology");
Win32_LogicalDiskInfo.Колонки.Добавить("FileSystem");
Win32_LogicalDiskInfo.Колонки.Добавить("FreeSpace");
Win32_LogicalDiskInfo.Колонки.Добавить("InstallDate");
Win32_LogicalDiskInfo.Колонки.Добавить("LastErrorCode");
Win32_LogicalDiskInfo.Колонки.Добавить("MaximumComponentLength");
Win32_LogicalDiskInfo.Колонки.Добавить("MediaType");
Win32_LogicalDiskInfo.Колонки.Добавить("Name");
Win32_LogicalDiskInfo.Колонки.Добавить("NumberOfBlocks");
Win32_LogicalDiskInfo.Колонки.Добавить("PNPDeviceID");
Win32_LogicalDiskInfo.Колонки.Добавить("PowerManagementCapabilities");
Win32_LogicalDiskInfo.Колонки.Добавить("PowerManagementSupported");
Win32_LogicalDiskInfo.Колонки.Добавить("ProviderName");
Win32_LogicalDiskInfo.Колонки.Добавить("Purpose");
Win32_LogicalDiskInfo.Колонки.Добавить("QuotasDisabled");
Win32_LogicalDiskInfo.Колонки.Добавить("QuotasIncomplete");
Win32_LogicalDiskInfo.Колонки.Добавить("QuotasRebuilding");
Win32_LogicalDiskInfo.Колонки.Добавить("Size");
Win32_LogicalDiskInfo.Колонки.Добавить("Status");
Win32_LogicalDiskInfo.Колонки.Добавить("StatusInfo");
Win32_LogicalDiskInfo.Колонки.Добавить("SupportsDiskQuotas");
Win32_LogicalDiskInfo.Колонки.Добавить("SupportsFileBasedCompression");
Win32_LogicalDiskInfo.Колонки.Добавить("SystemCreationClassName");
Win32_LogicalDiskInfo.Колонки.Добавить("SystemName");
Win32_LogicalDiskInfo.Колонки.Добавить("VolumeDirty");
Win32_LogicalDiskInfo.Колонки.Добавить("VolumeName");
Win32_LogicalDiskInfo.Колонки.Добавить("VolumeSerialNumber");
Попытка
WinMGMT = ПолучитьCOMОбъект("winmgmts:\\" + Computer + "\root\cimv2");
Win32_LogicalDisk = WinMGMT.ExecQuery("SELECT * from Win32_LogicalDisk");
Для Каждого LogicalDisk ИЗ Win32_LogicalDisk Цикл
LogicalDiskInfo = Win32_LogicalDiskInfo.Добавить();
LogicalDiskInfo.Access = LogicalDisk.Access;
LogicalDiskInfo.Availability = LogicalDisk.Availability;
LogicalDiskInfo.BlockSize = LogicalDisk.BlockSize;
LogicalDiskInfo.Caption = LogicalDisk.Caption;
LogicalDiskInfo.Compressed = LogicalDisk.Compressed;
LogicalDiskInfo.ConfigManagerErrorCode = LogicalDisk.ConfigManagerErrorCode;
LogicalDiskInfo.ConfigManagerUserConfig = LogicalDisk.ConfigManagerUserConfig;
LogicalDiskInfo.CreationClassName = LogicalDisk.CreationClassName;
LogicalDiskInfo.Description = LogicalDisk.Description;
LogicalDiskInfo.DeviceID = LogicalDisk.DeviceID;
LogicalDiskInfo.DriveType = LogicalDisk.DriveType;
LogicalDiskInfo.ErrorCleared = LogicalDisk.ErrorCleared;
LogicalDiskInfo.ErrorDescription = LogicalDisk.ErrorDescription;
LogicalDiskInfo.ErrorMethodology = LogicalDisk.ErrorMethodology;
LogicalDiskInfo.FileSystem = LogicalDisk.FileSystem;
LogicalDiskInfo.FreeSpace = LogicalDisk.FreeSpace;
LogicalDiskInfo.InstallDate = LogicalDisk.InstallDate;
LogicalDiskInfo.LastErrorCode = LogicalDisk.LastErrorCode;
LogicalDiskInfo.MaximumComponentLength = LogicalDisk.MaximumComponentLength;
LogicalDiskInfo.MediaType = LogicalDisk.MediaType;
LogicalDiskInfo.Name = LogicalDisk.Name;
LogicalDiskInfo.NumberOfBlocks = LogicalDisk.NumberOfBlocks;
LogicalDiskInfo.PNPDeviceID = LogicalDisk.PNPDeviceID;
LogicalDiskInfo.PowerManagementCapabilities = LogicalDisk.PowerManagementCapabilities;
LogicalDiskInfo.PowerManagementCapabilities = LogicalDisk.PowerManagementCapabilities;
LogicalDiskInfo.PowerManagementSupported = LogicalDisk.PowerManagementSupported;
LogicalDiskInfo.Purpose = LogicalDisk.Purpose;
LogicalDiskInfo.QuotasDisabled = LogicalDisk.QuotasDisabled;
LogicalDiskInfo.QuotasIncomplete = LogicalDisk.QuotasIncomplete;
LogicalDiskInfo.QuotasRebuilding = LogicalDisk.QuotasRebuilding;
LogicalDiskInfo.Size = LogicalDisk.Size;
LogicalDiskInfo.Status = LogicalDisk.Status;
LogicalDiskInfo.StatusInfo = LogicalDisk.StatusInfo;
LogicalDiskInfo.SupportsDiskQuotas = LogicalDisk.SupportsDiskQuotas;
LogicalDiskInfo.SupportsFileBasedCompression = LogicalDisk.SupportsFileBasedCompression;
LogicalDiskInfo.SystemCreationClassName = LogicalDisk.SystemCreationClassName;
LogicalDiskInfo.SystemName = LogicalDisk.SystemName;
LogicalDiskInfo.VolumeDirty = LogicalDisk.VolumeDirty;
LogicalDiskInfo.VolumeName = LogicalDisk.VolumeName;
LogicalDiskInfo.VolumeSerialNumber = LogicalDisk.VolumeSerialNumber;
КонецЦикла;
Исключение
КонецПопытки;
Возврат Win32_LogicalDiskInfo;
КонецФункции
// Функция, позволяющая получить значения атрибутов каталога локального компьютера.
//
&НаСервереБезКонтекста
Функция GetFolderInfo(Folder = "c:\program files")
FolderInfo = Новый Структура;
Попытка
FileSystemObject = Новый COMОбъект("Scripting.FileSystemObject");
FileSystemObject_FOLDER = FileSystemObject.GetFolder(Folder);
// Имя папки.
FolderInfo.Вставить("Name", FileSystemObject_FOLDER.Name);
// Короткое имя папки.
FolderInfo.Вставить("ShortName", FileSystemObject_FOLDER.ShortName);
// Тип папки.
FolderInfo.Вставить("Type", FileSystemObject_FOLDER.Type);
// Признак Корневая/Некорневая.
FolderInfo.Вставить("IsRootFolder", FileSystemObject_FOLDER.IsRootFolder);
// Имя диска, на котором расположена папка.
FolderInfo.Вставить("Drive", FileSystemObject_FOLDER.Drive.Path);
// Родительская папка.
FolderInfo.Вставить("ParentFolder", FileSystemObject_FOLDER.ParentFolder.Name);
// Полный путь.
FolderInfo.Вставить("Path", FileSystemObject_FOLDER.Path);
// Короткий путь.
FolderInfo.Вставить("ShortPath", FileSystemObject_FOLDER.ShortPath);
// Дата создания папки.
FolderInfo.Вставить("DateCreated", FileSystemObject_FOLDER.DateCreated);
// Дата последнего доступа к папке.
FolderInfo.Вставить("DateLastAccessed", FileSystemObject_FOLDER.DateLastAccessed);
// Дата последнего изменения папки.
FolderInfo.Вставить("DateLastModified", FileSystemObject_FOLDER.DateLastModified);
// Аттрибуты папки.
// 0 - Атрибуты не установлены.
// 1 - Read-only file.
// 2 - Hidden file.
// 4 - System file.
// 8 - Метка тома.
// 16 - Папка.
// 32 - Архивный файл.
// 64 - Ссылка/Ярык.
// 128 - Сжатый файл.
// При сочетании атрибутов их значения суммируются.
// Например: "c:\program files": 1 (Read-only file) + 16 (Папка) = 17.
FolderInfo.Вставить("Attributes", FileSystemObject_FOLDER.Attributes);
// Количество подпапок.
FolderInfo.Вставить("SubFoldersCount", FileSystemObject_FOLDER.SubFolders.Count);
// Количество файлов.
FolderInfo.Вставить("FilesCount", FileSystemObject_FOLDER.Files.Count);
// Размер папки.
FolderInfo.Вставить("Size", FileSystemObject_FOLDER.Size);
Исключение
КонецПопытки;
Возврат FolderInfo;
КонецФункции
// Функция, позволяющая получить значения атрибутов файла локального компьютера.
//
&НаСервереБезКонтекста
Функция GetFileInfo(File = "C:\boot.ini")
FileInfo = Новый Структура;
Попытка
FileSystemObject = Новый COMОбъект("Scripting.FileSystemObject");
FileSystemObject_FILE = FileSystemObject.GetFile(File);
// Имя файла.
FileInfo.Вставить("Name", FileSystemObject_FILE.Name);
// Короткое имя файла.
FileInfo.Вставить("ShortName", FileSystemObject_FILE.ShortName);
// Тип файла.
FileInfo.Вставить("Type", FileSystemObject_FILE.Type);
// Имя диска, на котором расположен файл.
FileInfo.Вставить("Drive", FileSystemObject_FILE.Drive.Path);
// Родительская папка файла.
FileInfo.Вставить("ParentFolder", FileSystemObject_FILE.ParentFolder.Name);
// Полный путь.
FileInfo.Вставить("Path", FileSystemObject_FILE.Path);
// Короткий путь.
FileInfo.Вставить("ShortPath", FileSystemObject_FILE.ShortPath);
// Размер файла.
FileInfo.Вставить("Size", FileSystemObject_FILE.Size);
// Дата создания файла.
FileInfo.Вставить("DateCreated", FileSystemObject_FILE.DateCreated);
// Дата последнего доступа к файлу.
FileInfo.Вставить("DateLastAccessed", FileSystemObject_FILE.DateLastAccessed);
// Дата последнего изменения файла.
FileInfo.Вставить("DateLastModified", FileSystemObject_FILE.DateLastModified);
// Аттрибуты файла.
// 0 - Атрибуты не установлены.
// 1 - Read-only file.
// 2 - Hidden file.
// 4 - System file.
// 8 - Метка тома.
// 16 - Папка.
// 32 - Архивный файл.
// 64 - Ссылка или ярык.
// 128 - Сжатый файл.
// При сочетании атрибутов их значения суммируются.
// Например: "C:\boot.ini": 2 (Hidden file) + 4 (System file) + 32 (Архивный файл) = 38.
FileInfo.Вставить("Attributes", FileSystemObject_FILE.Attributes);
Исключение
КонецПопытки;
Возврат FileInfo;
КонецФункции
// Функция прочитать текстовый файл.
// Возвращает массив считанных строк.
//
&НаКлиентеНаСервереБезКонтекста
Функция ПрочитатьТекстовыйФайл(Файл = "D:\TXT\TXT.TXT")
Массив = Новый Массив;
Попытка
FileSystemObject = Новый COMОбъект("Scripting.FileSystemObject");
Если НЕ FileSystemObject.FileExists(Файл) Тогда
Сообщить("Файл: " + Файл + " не существует.");
Возврат Массив;
КонецЕсли;
FileSystemObject_FILE = FileSystemObject.OpenTextFile(Файл);
Пока НЕ FileSystemObject_FILE.AtEndOfLine Цикл
СтрокаФайла = FileSystemObject_FILE.ReadLine();
Массив.Добавить(СтрокаФайла);
КонецЦикла;
FileSystemObject_FILE.Close();
Исключение
КонецПопытки;
Возврат Массив;
КонецФункции
// Функция: Пример создания файла (с проверкой: перезаписать/не перезаписать существующий файл).
// Возвращает Истина/Ложь.
//
&НаКлиентеНаСервереБезКонтекста
Функция СоздатьТекстовыйФайл(Файл = "D:\TXT\TXT.TXT", Перезаписать = Истина, Массив)
Если Массив = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
ФайлСозданПерезаписан = Ложь;
Попытка
FileSystemObject = Новый COMОбъект("Scripting.FileSystemObject");
Если FileSystemObject.FileExists(Файл) Тогда
Если Перезаписать Тогда
FileSystemObject_FILE = FileSystemObject.CreateTextFile(Файл, -1, 0); // Перезаписать существующий файл.
Иначе
Сообщить("Файл: " + Файл + " уже существует. Содержание не изменено.");
Возврат Ложь;
КонецЕсли;
Иначе
FileSystemObject_FILE = FileSystemObject.CreateTextFile(Файл, 0, 0); // Создать новый файл файл.
КонецЕсли;
Для Каждого Элемент ИЗ Массив Цикл
FileSystemObject_FILE.WriteLine(Элемент);
КонецЦикла;
FileSystemObject_FILE.Close();
ФайлСозданПерезаписан = Истина;
Исключение
КонецПопытки;
Возврат ФайлСозданПерезаписан;
КонецФункции
// Функция создает ярлык "Блокнот" на рабочем столе.
//
Функция СоздатьЯрлыкБлокнотНаРабочемСтоле()
Попытка
WSHShell = Новый COMОбъект("WScript.Shell");
DesktopPath = WSHShell.SpecialFolders.Item("Desktop");
Shortcut = WSHShell.CreateShortcut(DesktopPath + "\\Блокнот.lnk");
Shortcut.TargetPath = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe");
Shortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings("%windir%");
Shortcut.HotKey = "CTRL+ALT+N";
// 3 - Запустить программу с максимальным по размеру окном.
// 4 - Запустить программу со стандартным размером окна.
// 7 - Запустить программу, окно свернуто на панели задач.
Shortcut.WindowStyle = 4;
Shortcut.IconLocation = WSHShell.ExpandEnvironmentStrings("%windir%\\notepad.exe, 0");
Shortcut.Save();
Исключение
КонецПопытки;
КонецФункции
// Функция возвращает путь к папке пользователя "Мои документы".
//
&НаКлиентеНаСервереБезКонтекста
Функция МоиДокументы()
Попытка
WshShell = Новый COMОбъект("Wscript.Shell");
WshFolder = WshShell.SpecialFolders.Item("MyDocuments");
Возврат WshFolder;
Исключение
Возврат "";
КонецПопытки;
КонецФункции
С уважением к сообществу МА!