BAT批处理文件中变量的排列组合
示例1
set hanye=寒夜孤星,那么变量中这四个字,任意两个字排列,也可以自己和自己排列,有多少种排列呢?
bat脚本:
@echo off
set hanye=寒 夜 孤 星
for %%i in (%hanye%) do for %%j in (%hanye%) do echo %%i%%j &set /a guxing+=1
echo %guxing%种排列方法
pause
效果图:
示例2
set hanye=寒夜孤星,那么变量中这四个字,每个字与其他字排列,两位,有多少种排列呢?
bat脚本:
@echo off
set hanye=寒 夜 孤 星
for %%i in (%hanye%) do for %%j in (%hanye%) do if "%%i" neq "%%j" echo %%i%%j &set /a guxing+=1
echo %guxing%种排列方法
pause
效果图:
示例3
set hanye=寒夜孤星,那么变量中这四个字,每个字与其他字组合,两位,且不重复,有多少种组合呢?
bat脚本:
@echo off
set hanye=寒 夜 孤 星
for %%i in (%hanye%) do for %%j in (%hanye%) do if "%%i" neq "%%j" if not defined %%j%%i set %%i%%j=hanyeguxing & echo %%i%%j &set /a guxing+=1
echo %guxing%种组合方法
pause
效果图:
示例4
set hanye=寒夜孤星,那么变量中这四个字,有多少种排列呢?
bat脚本:
@echo off&setlocal enabledelayedexpansion
set han=寒夜孤星
:hanye
if defined han (
set num=!han:~,1!
if not defined ..!num! (
set /a ye+=1
set ..!num!=b
set "_!ye!=!han:~,1!"&set "han=!han:~1!"
goto hanye
) else (
set "han=!han:~1!"
goto hanye
)
)
call:guxing
echo %xing%种排列方法
pause&exit
:guxing
set/a gu+=1
if %gu% leq %ye% for /l %%i in (1 1 %ye%) do (
for %%j in (%~1) do set .%%j=%%j
if not defined .%%i call :guxing "%~1 %%i"
for /l %%k in (1 1 %ye%) do set .%%k=
) else (
for /l %%l in (1 1 %ye%) do set .%%l=
for %%m in (%~1) do set /p=!_%%m!<nul
echo.
set /a xing+=1
)
set /a gu-=1
效果图:
示例5
set hanye=寒夜孤星,那么变量中这四个字,每个字与其他字排列,不限定位数,可以存在单个文字,有多少种排列呢?
bat脚本:
@echo off&setlocal enabledelayedexpansion
set han=寒夜孤星
set m=0
set ye=abcdefghijklmnopqrstuvwxyz
:hanye
if "!han:~%m%,1!" neq "" (set s0=!s0! !han:~%m%,1! &set/a m+=1&goto :hanye)
set n=0
for %%i in (!s0!) do (
for %%j in (!n!) do (
set /a n+=1
set "gu1=!gu1!for %%!ye:~%%j,1! in (^!s%%j^!) do (set s!n!=^!s%%j:%%!ye:~%%j,1!=^!^&"
set "gu2=!gu2!%%!ye:~%%j,1!"
set "gu3=!gu3!)"
set xing1%%j=!gu1:~,-16!
set xing2%%j=!gu2!
set xing3%%j=!gu3!
)
)
set n=0
:guxing
set gu1=!xing1%n%!
set gu2=!xing2%n%!
set gu3=!xing3%n%!
%gu1%
echo %gu2%
set /a num+=1
%gu3%
set/a n+=1
if !n! neq !m! goto guxing
if !n! == !m! echo %num%种排列方法 &pause
效果图:
示例6
set hanye=寒夜孤星,那么变量中这四个字,每个字与其他字组合,不限定位数,可以存在单个文字,且不重复,有多少种组合呢?
bat脚本:
@echo off&setlocal enabledelayedexpansion
set han=寒 夜 孤 星
set n=1
for %%i in (%han%) do (
set /a i+=1 &echo %%i
set ye!i!=%%i
)
:hanye
set /a n+=1
if not defined ye%n% goto :guxing
for /f "tokens=1* delims==" %%i in ('set gu 2^>nul') do (
set /a x+=1
set gu!x!=%%j!ye%n%!
)
set /a f=n-1
if not defined str!ye%n%! for /l %%i in (1,1,%f%) do (
set /a x+=1
set gu!x!=!ye%%i!!ye%n%!
)
set /a str!ye%n%!+=1
goto :hanye
:guxing
for /f "tokens=1* delims==" %%i in ('set gu 2^>nul') do echo %%j
set /a xing=(1^<^<%i%)-1
echo %xing%种组合方法
pause
效果图:
转自:批处理文件的编写29-变量的排列组合