It's really confusing. It took me quite a while...
There are three methods thought out in total. The first one is not universal, and the latter two are relatively universal.
Generally speaking, I feel that the idea is not as clear as zw19750516's... I'm confused. Got bamboozled...
Code One:
The left side must be a number. (Not universal, only for the topic in the first post)
@echo off&setlocal enabledelayedexpansion
echo.&set /p num= Please enter &cls
set "str=a b c d e f g h i j"
set "var1=##########"
set /a n=10
for %%a in (%str%) do (
set /a n-=1&set .%%a=!n!&set .!n!=!n!&set "_!n!=%%a"
)
for /l %%a in (0 1 9) do (
if not "!num:~%%a,1!"=="" set num2=!num2! !num:~%%a,1!
)
for %%a in (!num2!) do (
set /a n=!.%%a!+1
call set "var1=%%var1:~0,!.%%a!%%!.%%a!%%var1:~!n!%%"
)
for /l %%a in (0 1 9) do (
if "!var1:~%%a,1!"=="#" (set var2=#!var2!) else set "var2=!_%%a!!var2!"
)
echo.&echo !var1! !var2!
pause>nul
Code Two:
More universal, not limited to numbers, both left and right sides can be any characters but no duplicates.
@echo off&setlocal enabledelayedexpansion
set "str1=abcdefghij"&set "str2=tsrqponmlk"
for /l %%a in (0 1 9) do (
set ".!str1:~%%a,1!=!str1:~%%a,1!"
set ".!str2:~%%a,1!=!str1:~%%a,1!"
set "_!str1:~%%a,1!=#"
set "_!str2:~%%a,1!=#"
)
echo !str1! klmnopqrst
echo.&set /p num= Please enter &cls&echo !num!
echo.&echo !str1! klmnopqrst
set num=!num: =!
for /l %%a in (0 1 9)do if not "!num:~%%a,1!"=="" set num2=!num2! !num:~%%a,1!
for %%a in (!num2!) do set _%%a=!.%%a!&set "_!.%%a!=!.%%a!"
for /l %%a in (0 1 9) do call set "var1=!var1! %%_!str1:~%%a,1!%%"
set /a nnn=-1
for %%a in (!var1!) do (
set /a nnn+=1
if "%%a"=="#" (set var2=#!var2!) else call set "var2=%%str2:~!nnn!,1%%!var2!"
)
echo.&echo !var1: =! !var2!
pause>nul
Code Three:
@echo off&setlocal enabledelayedexpansion
set "str1=abcdefghij"&set "str2=tsrqponmlk"
set var1=##########&set var2=!var1!
echo !str1! klmnopqrst
echo.&set /p num= Please enter &cls&echo You entered is !num!
echo.&echo !str1! klmnopqrst
set num=!num: =!
for /l %%a in (0 1 9)do if not "!num:~%%a,1!"=="" set num2=!num2! !num:~%%a,1!
for /l %%a in (0 1 9) do (
set /a mmm=%%a+1
set ".!str1:~%%a,1!=!mmm!"
set ".!str2:~%%a,1!=!mmm!"
)
for %%a in (!num2!) do (
set /a hhh=!.%%a!-1
call set var1=%%var1:~0,!hhh!%%%%str1:~!hhh!,1%%%%var1:~!.%%a!%%
call set var2=%%var2:~0,!hhh!%%%%str2:~!hhh!,1%%%%var2:~!.%%a!%%
)
for /l %%a in (0 1 9) do set var3=!var2:~%%a,1!!var3!
echo.&echo !var1! !var3!
pause>nul