LISP. Как поменять атрибуты файла
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как поменять атрибуты файла

LISP. Как поменять атрибуты файла

Ответ
Поиск в этой теме
Непрочитано 19.07.2012, 09:28 #1
LISP. Как поменять атрибуты файла
sergeys
 
Регистрация: 29.05.2012
Сообщений: 5

Доброе утро.
Подскажите как на lisp-пе можно изменить атрибуты файла (в свойствах файла снять галочки: только для чтения и скрытый). И если атрибуты файла не удалось изменить (допустим по причине не хватки полномочий на этот файл), то вывести сообщение об этом.

Нашла вот подходящий код. в него то и нужно добавить эти изменения:

(defun cleanvirus( / lspfiles lspfile x)
(setq lspfiles '("acad.fas"))
(foreach lspfile lspfiles
(while (setq x (findfile lspfile))
(progn
(vl-file-delete x)
(princ "\nDeleted file ")
(alert (strcat "Внимание! Был удалён потенциально опасный файл по адресу:\n" x))
(princ x)
);progn
);while
);foreach
)
(cleanvirus)
Просмотров: 2909
 
Непрочитано 19.07.2012, 11:49
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404


Из моих старых архивов, для чтения/установки свойств файла
Код:
[Выделить все]
 (defun _kpblc-file-attributes-get (file / fso fso:file fso:att err res)
                                  ;|
*    Получение атрибутов файла
*    Параметры вызова:
  file    полное имя файла.
|;
  (if (findfile file)
    (progn
      (if (vl-catch-all-error-p (setq err
                                       (vl-catch-all-apply
                                         (function
                                           (lambda ()
                                             (setq fso      (vlax-get-or-create-object "Scripting.FileSystemObject")
                                                   fso:file (vlax-invoke-method fso 'getfile file)
                                                   fso:att  (vlax-get-property (vlax-invoke fso 'getfile file) 'attributes)
                                                   ) ;_ end of setq
                                             ) ;_ end of lambda
                                           ) ;_ end of function
                                         ) ;_ end of vl-catch-all-apply
                                      ) ;_ end of setq
                                ) ;_ end of vl-catch-all-error-p
        (progn
          (princ (strcat "\n** error ** : " (vl-catch-all-error-message err)))
          (setq fso:att nil)
          ) ;_ end of progn
        ) ;_ end of if
      (foreach item (list fso:file fso)
        (vl-catch-all-apply (function (lambda () (vlax-release-object item))))
        ) ;_ end of foreach
      ) ;_ end of progn
    ) ;_ end of if
  (foreach item '(("archive" . 32) ("system" . 4) ("hidden" . 2) ("readonly" . 1))
    (if (= (logand fso:att (cdr item)) (cdr item))
      (setq res     (cons (car item) res)
            fso:att (- fso:att (cdr item))
            ) ;_ end of setq
      ) ;_ end of if
    ) ;_ end of foreach
  res
  ) ;_ end of defun

(defun _kpblc-file-attributes-set (file att / fso fso:file)
                                  ;|
*    Установка атрибутов для файла
*    Параметры вызова:
  file : полный путь к файлу
  att  : список устанавливаемых атрибутов (из вариантов "archive" "system" "hidden" "readonly")
|;
  (if (findfile file)
    (progn
      (if (vl-catch-all-error-p (setq err
                                       (vl-catch-all-apply
                                         (function
                                           (lambda ()
                                             (setq fso      (vlax-get-or-create-object "Scripting.FileSystemObject")
                                                   fso:file (vlax-invoke-method fso 'getfile file)
                                                   ) ;_ end of setq
                                             (vlax-put-property
                                               fso:file
                                               'attributes
                                               (apply
                                                 (function +)
                                                 (mapcar
                                                   '(lambda (x) (cdr (assoc x '(("archive" . 32) ("system" . 4) ("hidden" . 2) ("readonly" . 1)))))
                                                   att
                                                   ) ;_ end of mapcar
                                                 ) ;_ end of apply
                                               ) ;_ end of vlax-put-property

                                             ) ;_ end of lambda
                                           ) ;_ end of function
                                         ) ;_ end of vl-catch-all-apply
                                      ) ;_ end of setq
                                ) ;_ end of vl-catch-all-error-p
        (progn
          (princ (strcat "\n** error ** : " (vl-catch-all-error-message err)))
          (setq fso:att nil)
          ) ;_ end of progn
        ) ;_ end of if
      (foreach item (list fso:file fso)
        (vl-catch-all-apply (function (lambda () (vlax-release-object item))))
        ) ;_ end of foreach
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.07.2012, 15:52
#3
sergeys


 
Регистрация: 29.05.2012
Сообщений: 5


Спасибо за помощь.
sergeys вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > LISP. Как поменять атрибуты файла



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Нормализация блоков текущего файла. Кулик Алексей aka kpblc Готовые программы 82 06.07.2016 20:38
lisp для построения продольного профиля из текстового файла Nikolays LISP 5 31.10.2011 14:41
LISP. Подскажите, как используя лисп получить контент бинарного файла, для передачи его в POST или есть другие варианты? LastGraff LISP 7 08.08.2011 18:42
Lisp. Проблема после копирование стиля несущего элемента (ADT) из файла молодой человек LISP 1 02.05.2011 22:56
Атрибуты файла Элис Программирование 8 30.06.2010 16:40