Here's a more generic function using Evgeny's submission as a starting point:
(defun remove_all ( x lst / a )
(cond
((member x lst) nil)
((atom x) x)
((member (setq a (car x)) lst) (remove_all (cdr x) lst))
((cons (remove_all a lst) (remove_all (cdr x) lst)))
)
)
(setq lst '(1245 "" "add" (1 "" 2 nil "" 3 5 "" nil 6 "" 8 . 9)))
(remove_all lst '(nil ""))
=> (1245 "add" (1 2 3 5 6 8 . 9))
I reserve the right to reverse the order of the arguments; at present doesn't feel right, but gotta get back to work.