Quick & dirty for your consideration, coded blind:
(defun C:AcuTest ( / foo )
(defun foo ( filter layer / ss )
(if (null (setq ss (ssget "x" (list (cons 8 filter)))))
(princ (strcat "\nNo entites found for filter <" filter ">."))
(progn
(if (null (tblsearch "layer" layer ))
(vl-cmdf ".layer" "_new" layer "")
)
(vl-cmdf ".chprop" ss "" "_layer" layer "")
(princ
(strcat
"\n"
(itoa (sslength ss))
" object(s) moved to layer <" layer ">."
)
)
)
)
(princ)
)
(foreach pair
'(
("*Ala*" "Alarm")
("*Ax*" "Axis")
("*Back*" "Background")
("*Be*" "Beam")
("*Buil*" "Building")
)
(apply 'foo pair)
)
(princ)
)