无临时文件
@echo off&setlocal enabledelayedexpansion
set/p str=请输入字符:
:lp
if defined str (
set num=!str:~,1!
if not defined ..!num! (
set /a n+=1
set ..!num!=b
set "_!n!=!str:~,1!"&set "str=!str:~1!"
goto lp
) else (
set "str=!str:~1!"
goto lp
))
call:next
echo %mn% 个组合
pause&exit
:next
set/a m+=1
if %m% leq %n% for /l %%i in (1 1 %n%) do (
for %%j in (%~1) do set .%%j=%%j
if not defined .%%i call :next "%~1 %%i"
for /l %%k in (1 1 %n%) do set .%%k=
) else (
for /l %%l in (1 1 %n%) do set .%%l=
for %%m in (%~1) do set/p=!_%%m!<nul
echo.
set/a mn+=1
)
set/a m-=1
在batman兄的代码上简化下 有临时文件
@echo off&setlocal enabledelayedexpansion
set/p str=请输入字符:
:lp
set num=!str:~,1!
if not defined .!num! (
set str1=!str1!!num!
set /a n+=1
set .!num!=b
set "_!n!=!str:~,1!"&set "str=!str:~1!"
if defined str goto lp
)else (
set "str=!str:~1!"
if defined str goto lp
)
set/a n-=1
>b.bat echo @echo off^&setlocal enabledelayedexpansion
>>b.bat echo set "str=%str1%"
>>b.bat echo for /l %%%%i in (0 1 %n%) do set _%%%%i=^^!str:~%%%%i,1^^!^&set var0=^^!var0^^! %%%%i
for /l %%i in (0 1 %n%) do (
set/a m+=1
if !m! gtr %n% (
>>b.bat echo for %%%%%%i in (^^!var%%i^^!^) do echo !var!^^!_%%%%%%i^^!)else (
>>b.bat echo for %%%%%%i in (^^!var%%i^^!^) do ^(set "var!m!=^!var%%i:%%%%%%i=^!"
set "var=!var!^!_%%%%%%i^!"
set "k=!k!^)"
))
>>b.bat echo set/a t+=1
>>b.bat echo %k%
>>b.bat echo echo %%t%% 个组合
call "b.bat"
del "b.bat"
pause>nul
Last edited by terse on 2008-12-24 at 03:12 ]
No temporary file
@echo off&setlocal enabledelayedexpansion
set/p str=Please enter characters:
:lp
if defined str (
set num=!str:~,1!
if not defined ..!num! (
set /a n+=1
set ..!num!=b
set "_!n!=!str:~,1!"&set "str=!str:~1!"
goto lp
) else (
set "str=!str:~1!"
goto lp
))
call:next
echo %mn% combinations
pause&exit
:next
set/a m+=1
if %m% leq %n% for /l %%i in (1 1 %n%) do (
for %%j in (%~1) do set .%%j=%%j
if not defined .%%i call :next "%~1 %%i"
for /l %%k in (1 1 %n%) do set .%%k=
) else (
for /l %%l in (1 1 %n%) do set .%%l=
for %%m in (%~1) do set/p=!_%%m!<nul
echo.
set/a mn+=1
)
set/a m-=1
Simplified on Brother batman's code, there are temporary files
@echo off&setlocal enabledelayedexpansion
set/p str=Please enter characters:
:lp
set num=!str:~,1!
if not defined .!num! (
set str1=!str1!!num!
set /a n+=1
set .!num!=b
set "_!n!=!str:~,1!"&set "str=!str:~1!"
if defined str goto lp
)else (
set "str=!str:~1!"
if defined str goto lp
)
set/a n-=1
>b.bat echo @echo off^&setlocal enabledelayedexpansion
>>b.bat echo set "str=%str1%"
>>b.bat echo for /l %%%%i in (0 1 %n%) do set _%%%%i=^^!str:~%%%%i,1^^!^&set var0=^^!var0^^! %%%%i
for /l %%i in (0 1 %n%) do (
set/a m+=1
if !m! gtr %n% (
>>b.bat echo for %%%%%%i in (^^!var%%i^^!^) do echo !var!^^!_%%%%%%i^^!)else (
>>b.bat echo for %%%%%%i in (^^!var%%i^^!^) do ^(set "var!m!=^!var%%i:%%%%%%i=^!"
set "var=!var!^!_%%%%%%i^!"
set "k=!k!^)"
))
>>b.bat echo set/a t+=1
>>b.bat echo %k%
>>b.bat echo echo %%t%% combinations
call "b.bat"
del "b.bat"
pause>nul
Last edited by terse on 2008-12-24 at 03:12 ]