Give this a try:
(defun _hatchcolorstolayer (lst / a d tc)
;; RJP » 2019-11-06
(vl-load-com)
(vlax-for l (vla-get-layers (setq d (vla-get-activedocument (vlax-get-acad-object))))
(cond ((= -1 (vlax-get l 'lock)) (vlax-put l 'lock 0) (setq a (cons l a))))
)
(vlax-for b (vla-get-blocks d)
(if (= 0 (vlax-get b 'isxref))
(vlax-for o b
(cond ((and (= (vla-get-objectname o) "AcDbHatch")
(setq tc (vla-get-truecolor o))
(setq tc (mapcar '(lambda (x) (vlax-get tc x)) '(red green blue)))
(setq ln (cadr (assoc tc lst)))
)
(or (tblobjname "layer" ln)
(entmakex (append (entget (vlax-vla-object->ename o)) (list (cons 8 ln))))
)
(vl-catch-all-apply 'vla-put-layer (list o ln))
)
)
)
)
)
(foreach l a (vlax-put l 'lock -1))
(princ)
)
;; You will need to create your list of colors and new layers to feed to the function
(_hatchcolorstolayer
'(((128 210 4) "Poly_Stahlbeton") ((153 76 0) "Poly_Mauerwerk") ((245 245 235) "RJP-TEST"))
)