; clean up temp directory..
; by (Sea-Haven) Alan H 

(defun c:cleanuptemp ( / ans filename files1 files2 files3 files4 files5 files6 files7 files8 lst7 totmb val x)

(defun delall (filename / )
  (if (= filename nil)
  (princ "\nNo files")
  (foreach fname filename
   (princ (strcat "\n" fname))
   (vl-file-delete (strcat pre fname))
  )
  )
)


(defun totsmb (files / )
  (foreach file files
   (setq totmb (+ totmb (vl-file-size (strcat pre file))))
  )
)

(setq *files*  (vla-get-files  (vla-get-preferences (vlax-get-Acad-object))))
(setq pre (vla-get-TempFilePath *files*))

(setq lst7 '())
(setq totmb 0)

(setq files1 (vl-directory-files pre "*.BAK"))
(if (= files1 nil)
  (setq lst7 (cons "0 BAK's " lst7))
  (progn
  (totsmb files1)
  (setq lst7 (cons (strcat  (rtos (length files1) 2 0) " BAK's ") lst7))
  )
)
(setq files2 (vl-directory-files pre "*.sv$"))
(if (= files2 nil)
  (setq lst7 (cons "0 SV$'s " lst7))
  (progn
  (totsmb files2)
  (setq lst7 (cons (strcat (rtos (length files2) 2 0) " SV$'s " ) lst7))
  )
)
(setq files3 (vl-directory-files pre "*.dwl*"))
(if (= files3 nil)
  (setq lst7 (cons "0 DWL's " lst7))
  (progn
  (totsmb files3)
  (setq lst7 (cons (strcat  (rtos (length files3) 2 0) " DWL's ") lst7))
  )
)
(setq files4 (vl-directory-files pre "*.AC$"))
(if (= files4 nil)
  (setq lst7 (cons "0 ac$'s " lst7))
  (progn
  (totsmb files4)
  (setq lst7 (cons (strcat (rtos (length files4) 2 0) " AC$'s " ) lst7))
  )
)
(setq files5 (vl-directory-files pre "*.log"))
(if (= files5 nil)
  (setq lst7 (cons "0 Logfile's" lst7))
  (progn
  (totsmb files5)
  (setq lst7 (cons (strcat (rtos (length files5) 2 0) " Logfile's ") lst7))
  )
)
(setq files6 (vl-directory-files pre "_VL*.dcl"))
(if (= files6 nil)(setq files6 '()))
(setq files6 (append (vl-directory-files pre "~*.dcl") files6))
(if (= files6 nil)
(setq lst7 (cons "0 Temp DCL's " lst7))
(progn
  (totsmb files6)
  (setq lst7 (cons (strcat (rtos (length files6) 2 0)" Temp DCL's " ) lst7))
)
)
(setq files7 (vl-directory-files pre "*.dmp"))
(if (= files7 nil)
  (setq lst7 (cons "0 DMP's " lst7))
  (progn
  (totsmb files7)
  (setq lst7 (cons (strcat (rtos (length files7) 2 0)" DMP's " ) lst7))
  )
)
(setq files8 (vl-directory-files pre "*.scr"))
(if (= files8 nil)
  (setq lst7 (cons "0 SCR's " lst7))
  (progn
  (setq files8 (vl-directory-files pre "*.scr"))
  (setq lst7 (cons (strcat (rtos (length files8) 2 0)" SCR's " ) lst7))
  )
)

(setq lst7 (cons "All" lst7))
(setq lst7 (reverse lst7))
(setq lst7 (cons "Pick to delete " lst7))
(alert (strcat "Your temp directory is " pre "\n \nFiles size to be removed is " (rtos (/ totmb 1000000.0) 2 1) "Mb"))

(if (not AH:Toggs)(load "Multiple toggles.lsp"))

(setq ans (reverse  (ah:toggs lst7)))

(setq x 0)
(if (= (nth 8 ans) "1")
(progn
(delall files1)
(delall files2)
(delall files3)
(delall files4)
(delall files5)
(delall files6)
(delall files7)
(delall files8)
)
(progn 
  (foreach val ans
  (if (= val "1")
  (progn
    (foreach filename (eval (read (strcat "files" (rtos (1+ x) 2 0))))
    (vl-file-delete (strcat pre filename))
    (princ (strcat "\n" filename))
    )
  )
  )
  (setq x (1+ x))
  )
  )
)

(princ)
)
(c:cleanuptemp)


