mkdir2

Uma rotina que complementa a função VL-MKDIR:


(defun mkdir2 (path / pos lst drive f)
;limpa a string:
(while (vl-string-search “” path)
(
setq path (vl-string-subst “/” “” path)))
;remove a barra do final, se ela existir:
(setq path (vl-string-right-trim “/” path))
;desmonta a string numa lista:
(while (setq pos (vl-string-search “/” path))
(
setq pasta (substr path 1 pos)
lst (cons pasta lst)
path (substr path (+ 2 pos) (strlen path))))
;inicializa a busca:
(setq lst (reverse (cons path lst))
drive (car lst)
lst (cdr lst)
f (and lst f))
;entra em cada sub-pasta e verifica:
(while (and lst f)
(
setq drive (strcat drive “/” (car lst))
lst (cdr lst))
(
if (not (findfile drive))
(
setq f (vl-mkdir drive))))
f)


Como vocês sabem a função “vl-mkdir” cria apenas uma pasta e apenas isso, mas em alguns casos, precisamos de subpastas dentro de subpastas… e para usarmos essa função precisamos de um looping que verifique a existência de cada subpasta, pois a função “vl-mkdir” falha se tentarmos criar uma pasta dentro de outra que não existe…

entao aí está, para usar:
(mkdir2 “c:/teste/temp/abobrinha/”) ou
(mkdir2 “c:testetempabobrinha”), assim é como a forma usada pelo autocad
A subrotina irá devolver T se obter sucesso, ou NIL em caso de falha
ela irá falhar apenas se você especificar um caminho que seria inválido para o windows

Deixe um comentário

Carrinho de compras
Rolar para cima