Функция ФАЙЛ_АТРИБУТЫ
Функция ФАЙЛ_АТРИБУТЫ позволяет получить набор различных атрибутов файла, упорядоченных по категориям. Набор может различаться для файлов разных типов.
ФУНКЦИЯ ЛОГИКА: ФАЙЛ_АТРИБУТЫ(СТРОКА: путь; ПЕРЕМ НАБОР_АТРИБУТОВ_ФАЙЛА: атрибуты; СТРОКА: маска = "")
Параметры
- путь
- Путь к файлу или папке.
- атрибуты
- Выходной параметр. Контейнерное значение с ключами категория и имя атрибута
- маска
- Необязательный параметр. Маска получения информации. По умолчанию пустая строка соответствует категориям ATTRIBUTES, TIME, SIZE, и VERSION. Для получения значений из категорий SECURITY и ACCESS, эти категории должны быть явно указаны в параметре "маска". Можно указывать одновременно несколько категорий через точку с запятой. Например, "TIME;ACCESS".
Возвращаемое значение
Функция возвращает ДА в случае успешного выполнения (указанные файл или папка существуют и доступны для чтения) и НЕТ - в противном случае.
Замечание
Набор возвращаемых атрибутов может в дальнейшем расширяться. Некоторые категории атрибутов имеют смысл только для файлов, но не папок. Некоторые категории атрибутов могут быть получены не для любых файлов. Ниже приводится таблица для некоторых атрибутов файлов, доступных под управлением Windows.
Категория | Имя атрибута | Тип | Описание |
---|---|---|---|
"ATTRIBUTES" | "ARCHIVE" | ЛОГИКА | Файл подлежит архивированию, резервному копированию. По умолчанию файлы создаются с этим атрибутом. |
"COMPRESSED" | ЛОГИКА | Для файла или папки применяется сжатие. | |
"DIRECTORY" | ЛОГИКА | ДА - папка, НЕТ - файл. | |
"ENCRYPTED" | ЛОГИКА | Для файла или папки применяется шифрование. | |
"HIDDEN" | ЛОГИКА | Скрытый файл или папка. | |
"READONLY" | ЛОГИКА | Файл только для чтения. | |
"SYSTEM" | ЛОГИКА | Системный файл или папка. | |
"TEMPORARY" | ЛОГИКА | Временный файл. | |
"SIZE" (только для файлов) |
"BYTES" | ЧИСЛО | Размер файла в байтах. |
"KB" | ЧИСЛО | Размер файла в килобайтах. | |
"MB" | ЧИСЛО | Размер файла в мегабайтах. | |
"TIME" (в локальной временной зоне) |
"CREATION" | ДАТА_ВРЕМЯ | Время создания файла. |
"LAST_ACCESS" | ДАТА_ВРЕМЯ | Время последнего доступа к файлу. | |
"LAST_WRITE" | ДАТА_ВРЕМЯ | Время последнего изменения к файла. | |
"VERSION" (только для файлов с информацией о версии) |
"FILE" | СТРОКА | Версия файла в формате "N.N.N.N". |
"PRODUCT" | СТРОКА | Версия программного продукта в формате "N.N.N.N". | |
"SECURITY" (должна явно указываться в маске) |
"DESCRIPTOR" | СТРОКА | Строковый описатель прав доступа к файлу или папке. |
"ACCESS" (должна явно указываться в маске) - проверка прав текущего процесса на доступ к файлу. |
"READ" | ЛОГИКА | На чтение файла. |
"WRITE" | ЛОГИКА | На запись файла. | |
"EXECUTE" | ЛОГИКА | На выполнение файла. | |
"DELETE" | ЛОГИКА | На удаление файла. | |
"WRITE_DAC" | ЛОГИКА | На изменение прав доступа к файлу. | |
"WRITE_OWNER" | ЛОГИКА | На изменение владельца файла. |
Пример
ВЫЧИСЛИТЬ ПЕРЕМ НАБОР_АТРИБУТОВ_ФАЙЛА: атр ПЕРЕМ рез = ФАЙЛ_АТРИБУТЫ("C:\Program Files\7-Zip\7z.exe", атр) ОТЛАДКА(рез) ЦИКЛ ИНДЕКС(знач = атр[категория, имя]) ОТЛАДКА("[" + категория + ", " + имя + "] -> " + СТР(знач)) КОНЕЦ_ЦИКЛА КОНЕЦВывод:
+ [ATTRIBUTES, ARCHIVE] -> + [ATTRIBUTES, COMPRESSED] -> - [ATTRIBUTES, DIRECTORY] -> - [ATTRIBUTES, ENCRYPTED] -> - [ATTRIBUTES, HIDDEN] -> - [ATTRIBUTES, READONLY] -> - [ATTRIBUTES, SYSTEM] -> - [ATTRIBUTES, TEMPORARY] -> - [SIZE, BYTES] -> 284160 [SIZE, KB] -> 277.5 [SIZE, MB] -> 0.27099609375 [TIME, CREATION] -> ДАТА_ВРЕМЯ[дата=18.11.2010,время=20:08:30:00] [TIME, LAST_ACCESS] -> ДАТА_ВРЕМЯ[дата=17.12.2013,время=14:39:58:77] [TIME, LAST_WRITE] -> ДАТА_ВРЕМЯ[дата=18.11.2010,время=20:08:30:00] [VERSION, FILE] -> "9.20.0.0" [VERSION, PRODUCT] -> "9.20.0.0"
Замечание
При указании категории ACCESS проверяются права доступа к файлу не для текущего пользователя, а для текущего процесса, что не одно и тоже при включенном UAC (User Access Control). Если не хватает прав для чтения прав доступа указанного файла, то параметы категории ACCESS не добаваляются в набор.
Пример проверки прав доступа
ВЫЧИСЛИТЬ ПЕРЕМ НАБОР_АТРИБУТОВ_ФАЙЛА: атр ПЕРЕМ рез = ФАЙЛ_АТРИБУТЫ("C:\Windows\notepad.exe", атр, "VERSION;ACCESS") ОТЛАДКА(рез) ЦИКЛ ИНДЕКС(знач = атр[категория, имя]) ОТЛАДКА("[" + категория + ", " + имя + "] -> " + СТР(знач)) КОНЕЦ_ЦИКЛА КОНЕЦВывод:
+ [ACCESS, DELETE] -> - [ACCESS, EXECUTE] -> + [ACCESS, READ] -> + [ACCESS, WRITE] -> - [ACCESS, WRITE_DAC] -> - [ACCESS, WRITE_OWNER] -> - [VERSION, FILE] -> "6.3.9600.17930" [VERSION, PRODUCT] -> "6.3.9600.17930"