本帖最后由 523066680 于 2011-5-21 12:39 编辑
在cn-dos做过
arrangement- @echo off
- setlocal enabledelayedexpansion
- set /p inp="仅支持排列几个普通字符,不要乱输哦:"
- call :func "%inp%" ""
- pause
- exit
-
- :func
- if "%~1"=="" (echo _%~2 &goto :eof)
- setlocal
- set strnow=%~1
- set /a lp=0,lpb=lp+1
- :lp
- call :func "!strnow:~0,%lp%!!strnow:~%lpb%!" "%~2!strnow:~%lp%,1!"
- if not "!strnow:~%lpb%!"=="" (
- set /a lp+=1,lpb=lp+1
- goto :lp
- )
- endlocal
复制代码 combination- @echo off
- call :func "abcd" ""
- pause &exit
-
- :func
- setlocal
- if %1=="" (
- if not %2=="" (echo %2)
- goto :eof
- )
- set strnow=%~1
- call :func "%strnow:~1%" "%~2%strnow:~0,1%"
- call :func "%strnow:~1%" "%~2"
- endlocal
复制代码 本来利用批处理可以用变量作为语句执行的特点可以用变量构造多层for ,这样速度很快。
但是排列方面整起来不容易,组合的话倒可以:- @echo off &setlocal enabledelayedexpansion
-
- set element=a b c
-
- :gettitle
- for %%x in (%element%) do (
- set "fo=for %%%%x in ("%%x" "") do (!fo!"
- set end="!end!)"
- set result=!result!%%~%%x
- )
-
- %fo%
- echo "%result%"
- %end:"=%
- pause
复制代码
|