NanoCAD: Как получить список папок и содержащихся в них файлов?
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > NanoCAD: Как получить список папок и содержащихся в них файлов?

NanoCAD: Как получить список папок и содержащихся в них файлов?

Ответ
Поиск в этой теме
Непрочитано 27.03.2024, 13:33 #1
NanoCAD: Как получить список папок и содержащихся в них файлов?
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 616

Всем привет!

Нужно получить список вида:

("D:\\A1\f1.dwg" "D:\\A1\f2.dwg" "D:\\A1\A20\f10.dwg" "D:\\A1\A20\f20.dwg" "D:\\A1\B20\c10.dwg" "D:\\A1\B20\c20.dwg" и т.д.)

где в папке A1 находятся файлы *.dwg и папки A20 и B20,
внутри которых, в свою очередь, тоже есть dwg-файлы.

В АвтоКАДе я для этого запускал системную команду DIR с ключами,
она мне складывала всё найденное в файл, из которого я и забирал,
что мне нужно.

Вопрос:

Как из nanoCAD запустить команду DIR, если это не внешний файл DIR.exe,
а внутренняя команда системы Windows?


Можно, конечно, использовать (vl-directory-files "D:\\A1" "*.dwg" 0), разобрать
полученный список выделить из него папки, составить новый путь, снова всё
перебрать уже на более глубоком уровне вложенности...

А попроще-то можно?
__________________
Счастливо, Алексей!
Просмотров: 778
 
Непрочитано 27.03.2024, 13:56
#2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Offtop: попроще - на .Net:
string[] lFileNames = Directory.GetFiles(%Путь поиска%, "*.dwg", SearchOption.AllDirectories);
Сергей812 вне форума  
 
Непрочитано 27.03.2024, 14:03
#3
CTPAHHNK

чертила
 
Регистрация: 30.11.2009
Вятка
Сообщений: 851


А чем DIR из командной строки не устраивает?

Вывод списка файлов и подкаталогов в указанном каталоге.

DIR [drive:][path][filename] [/A[[:]attributes]] [/b] [/C] [/D] [/L] [/N]
[/O[[:]sortorder]] [/P] [/Q] [/R] [/s] [/T[[:]timefield]] [/W] [/X] [/4]

[drive:][path][filename]
Диск, каталог или имена файлов для включения в список.

/A Отображение файлов с указанными атрибутами.
атрибуты D Каталоги. R Файлы, доступные только для чтения
H Скрытые файлы A Файлы, готовые для архивирования
S Системные файлы I Файлы с неиндексированным содержимым
L Точки повторной обработки O Автономные файлы
- Префикс "-" имеет значение НЕ
/B Вывод только имен файлов.
/C Применение разделителя групп разрядов при выводе размеров файлов.
Используется по умолчанию. Чтобы отключить применение разделителя групп разрядов, задайте ключ /-C.
/D Вывод списка в нескольких столбцах с сортировкой по столбцам.
/L Использовать нижний регистр.
/N Новый формат длинного списка, имена файлов выводятся в крайнем правом столбце.
/O Сортировка списка отображаемых файлов.
sortorder N По имени (по алфавиту) S По размеру (начиная с минимального)
E По расширению (по алфавиту) D По дате и времени (начиная с самого старого)
G Начать список с каталогов - Префикс "-" обращает порядок
/P Пауза после заполнения каждого экрана.
/Q Вывод сведений о владельце файла.
/R Отображение альтернативных потоков данных этого файла.
/S Отображение файлов из указанного каталога и всех его подкаталогов.
__________________
Основа вятской философии: "Так-то да, а так-то и нет." :secret:
CTPAHHNK вне форума  
 
Автор темы   Непрочитано 27.03.2024, 14:22
#4
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 616


To Сергей812
На .NET - всем устраивает (хороший повод изучить его и даже есть маленькая задача для этого, не спорю)

То CTPAHHNK

DIR тоже всем устраивает, я не знаю, как его из-под nanoCAD запустить (как из-под Автокад - знаю).
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 27.03.2024, 14:26
1 | 1 #5
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
 (defun fun_browsefiles-in-directory-nested (path mask) 
  (apply (function append) 
         (cons 
           (if (vl-directory-files path mask) 
             (mapcar (function (lambda (x) (strcat (vl-string-right-trim "\\" path) "\\" x))) 
                     (vl-directory-files path mask)
             )
           )
           (mapcar 
             (function 
               (lambda (x) 
                 (fun_browsefiles-in-directory-nested (strcat (vl-string-right-trim "\\" path) "\\" x) mask)
               )
             )
             (vl-remove ".." (vl-remove "." (vl-directory-files path nil -1)))
           )
         )
  )
)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > NanoCAD: Как получить список папок и содержащихся в них файлов?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список стилей таблиц на VBA? МишаИнженер Программирование 5 07.03.2022 17:22
Lisp Как правильно получить список стилей ячеек табличного стиля? Kirill_Ja LISP 3 17.08.2016 17:30
Lisp: как получить список загруженных шейпов? cj_lex LISP 2 01.02.2013 14:24
Как получить Список файлов в директории (поддиректорий) VBA sf Программирование 2 17.12.2010 12:06
Можно ли получить список реакторов объекта? kos Программирование 1 13.01.2005 13:28