Подборка "скриптовых" функций и процедур.
Другие части:
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 + »
ootcimv2″);
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 + »
ootcimv2″);
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:oot.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:oot.ini»: 2 (Hidden file) + 4 (System file) + 32 (Архивный файл) = 38.
FileInfo.Вставить(«Attributes», FileSystemObject_FILE.Attributes);
Исключение
КонецПопытки;
Возврат FileInfo;
КонецФункции
// Функция прочитать текстовый файл.
// Возвращает массив считанных строк.
//
&НаКлиентеНаСервереБезКонтекста
Функция ПрочитатьТекстовыйФайл(Файл = «D:TXTTXT.TXT»)
Массив = Новый Массив;
Попытка
FileSystemObject = Новый COMОбъект(«Scripting.FileSystemObject»);
Если НЕ FileSystemObject.FileExists(Файл) Тогда
Сообщить(«Файл: « + Файл + » не существует.»);
Возврат Массив;
КонецЕсли;
FileSystemObject_FILE = FileSystemObject.OpenTextFile(Файл);
Пока НЕ FileSystemObject_FILE.AtEndOfLine Цикл
СтрокаФайла = FileSystemObject_FILE.ReadLine();
Массив.Добавить(СтрокаФайла);
КонецЦикла;
FileSystemObject_FILE.Close();
Исключение
КонецПопытки;
Возврат Массив;
КонецФункции
// Функция: Пример создания файла (с проверкой: перезаписать/не перезаписать существующий файл).
// Возвращает Истина/Ложь.
//
&НаКлиентеНаСервереБезКонтекста
Функция СоздатьТекстовыйФайл(Файл = «D:TXTTXT.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;
Исключение
Возврат «»;
КонецПопытки;
КонецФункции
С уважением к сообществу МА!
однозначно +
Автору респект.
может быть пропустил, поэтому добавлю к функции GetFolderInfo
//размер папки
FolderInfo.Вставить(«Size», FileSystemObject_FOLDER.Size);
//количество подпапок
FolderInfo.Вставить(«SubFoldersCount», FileSystemObject_FOLDER.SubFolders.Count);
//количество файлов
FolderInfo.Вставить(«FilesCount», FileSystemObject_FOLDER.Files.Count);
(3) vec435,
Спасибо.
можно продолжить статьи примерами по работе c WMI
Добавлены функции: Computer_PhysicalDisk(), Computer_LogicalDisk().
//количество подпапок
FolderInfo.Вставить(«SubFoldersCount», FileSystemObject_FOLDER.SubFolders.Count);
//количество файлов
FolderInfo.Вставить(«FilesCount», FileSystemObject_FOLDER.Files.Count);
я так понял они возвращают только то, что находится на 1 уровень ниже чем основная папка?
А как получить сколько всего папок и файлов в этой папке? в стандартном интерфейса виндоус такое показано.