Perhaps this will help.
Code:
;;;=======================[ LayerXrename.lsp ]=======================
;;; Author: Charles Alan Butler
;;; Version: 1.0 jan. 10, 2006
;;; Purpose: Rename Bound xref layers $0$ to X1-Layername
;;; Sub_Routines: -None
;;;==============================================================
(defun c:layerxrename (/ usercmd lnamelst laylst x newname prefix prefixcnt tmp)
(vl-load-com)
(setq usercmd (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(setq laylst (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))))
(vlax-for x laylst
(setq lnamelst (cons (list (vla-get-name x) x) lnamelst))
)
(setq lnamelst (vl-sort lnamelst '(lambda (e1 e2) (< (car e1) (car e2)))))
(setq prefix ""
prefixcnt 0
)
(foreach x lnamelst
(if (wcmatch (car x) "*$*$*") ; rename the layer
(progn
(if (/= (setq tmp (substr (car x) 1 (vl-string-search "$" (car x)))) prefix)
(setq prefixcnt (1+ prefixcnt)
prefix tmp)
)
(setq newname (strcat "X" (itoa prefixcnt) "-"
(substr (car x) (+ 4 (vl-string-search "$0$" (car x))))
)
)
(vl-catch-all-apply 'vla-put-name (list (cadr x) newname))
)
)
)
(setvar "CMDECHO" usercmd)
(princ)
)
(prompt "\nXref Layer Rename removes $0$, Enter LayerXrename to run.")
(princ)