BAT批处理文件中变量的排列组合

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
效果图:
BAT批处理文件中变量的排列组合_第1张图片

示例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
效果图:
BAT批处理文件中变量的排列组合_第2张图片

示例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
效果图:
BAT批处理文件中变量的排列组合_第3张图片

示例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
效果图:
BAT批处理文件中变量的排列组合_第4张图片

示例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
效果图:
BAT批处理文件中变量的排列组合_第5张图片

转自:批处理文件的编写29-变量的排列组合

你可能感兴趣的:(BAT批处理文件中变量的排列组合)