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"))
)