警告:运行BAT源码是一种危险的动作,如果你不熟悉,请不要尝试!
@echo off :: 目的: :: test.txt中保存的是纯数值数据,一行一条记录,求所有组合的和。 :: 要求格式 算术表达式=和 ,比如 1+2+3=6。 :: :: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=26180 @echo off :: 使用递归 :: Code by qzwqzw 2006-12-31 CMD@XP setlocal enabledelayedexpansion
for /f %%n in (test.txt) do ( set /a i+=1 set gn!i!=%%n ) set gn pause
for /l %%j in (1,1,%i%) do call :rec %%j pause goto :eof
:rec setlocal
call set tmp=%%gn%1%% set /a sum+=%tmp% set /a lvl+=1 if %lvl% gtr 1 ( set exp=%exp%+%tmp% set /a idx+=1 echo !idx!:!exp!=%sum% ) else (set exp=%tmp%)
set /a nxt=%1+1 for /l %%j in (%nxt%,1,%i%) do call :rec %%j
endlocal & set idx=%idx% goto :eof
@echo off&setlocal enabledelayedexpansion :: modified by tao0610 2007-1-4 :: 基于qzwqzw的代码修改而来,避开FOR的嵌套和CALL递归,效率有所提升。 set n=1 for /f %%n in (test.txt) do ( set /a i+=1 set str!i!=%%n ) set str pause&echo.
:loop set/a n+=1 if not defined str%n% goto end for /f "tokens=1* delims==" %%a in ('set result 2^>nul') do ( set/a x+=1 set result!x!=%%b+!str%n%! ) set/a f=n-1 if not defined flag!str%n%! for /l %%j in (1,1,%f%) do ( set/a x+=1 set result!x!=!str%%j!+!str%n%! ) set/a flag!str%n%!+=1 goto :loop
:end for /f "tokens=1* delims==" %%a in ('set result 2^>nul') do ( set/a id+=1 set/a %%a=%%b echo !id!:%%b=!%%a! ) pause&goto :eof
|