Do your really want to create another set of variables with the same values?
Or do you really need to just Rename the ones that you have, such as for combining with another data set?
If you use the Search bar at the top of your message for something like "Rename all Variables" you find a number of variations on that:
Such as https://communities.sas.com/t5/New-SAS-User/rename-a-whole-set-of-variable-adding-the-same-suffix-to...
Your code example assigns the non_underscored variable value to an underscored name. That doesn't quite match your verbiage.
Something like this may work:
%macro dummy;
Proc sql;
select name into : varlist separated by " "
from dictionary.columns
where libname='WORK' and memname='HAVE'
and substr(name,1,1)='_'
;
quit;
data work.want;
set work.have;
%do i= 1 %to %sysfunc(countw(&varlist.));
%let var = %substr(%scan(&varlist., &i),2);
_&var.= &var.;
/* or &var. = _&var.; depending on actual direction*/
%end;
run;
%mend;
Which does assume that you have both Name and _Name for all the variables.