使用批处理创建单词列表

时间:2012-06-14 16:07:33

标签: batch-file

我想制作一个批处理文件,在文本文件中打印出数字和字母组合的列表 使用{0,...,9a,...,zA,...,Z}作为我的角色池,我有62个独特的角色 字长从1开始并增加到预定值。

脚本从length = 1开始,打印出0Z 然后进入length = 2并打印00ZZ,依此类推......

2 个答案:

答案 0 :(得分:2)

这是一个更快的迭代解决方案。

无需CALL。 每个排列只生成一次。

我能够在不到5分钟的时间内产生长达4的超过1500万个排列。

@echo off
setlocal enableDelayedExpansion
set chars=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
set maxPos=61
del output.txt 2>nul

>prior.txt echo(""
for /l %%I in (1 1 %1) do (
  >new.txt (
    for /f %%A in (prior.txt) do for /l %%N in (0 1 %maxPos%) do echo(%%~A!chars:~%%N,1!
  )
  type new.txt>>output.txt
  move /y new.txt prior.txt >nul
)
del prior.txt

答案 1 :(得分:0)

也许这就是你想要的?

<强> TEST.BAT

@echo off
set charPool=_0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
set charLen=62
(for /L %%a in (1,1,%1) do (
   set permutation=
   call :makePermutation %%a
)) > textfile.txt
goto :EOF

:makePermutation level
setlocal EnableDelayedExpansion
set lastPermutation=%permutation%
for /L %%i in (1,1,%charLen%) do (
   set permutation=!lastPermutation!!charPool:~%%i,1!
   if %1 gtr 1 (
      set /A newLevel=%1-1
      call :makePermutation !newLevel!
   ) else (
      echo(!permutation!
   )
)
exit /B

批处理文件必须以数字作为参数启动,该参数是单位长度。

例如,在使用TEST.BAT 1时,文本文件textfile.txt包含62行。

请注意TEST.BAT 2从0到ZZ生成3906种组合(严格来说,统计意义上的排列),TEST.BAT 3生成从0到ZZZ的242234种组合!

估算文本文件中字符串数量(文件大小)的计算示例:

TEST.BAT作为参数运行5会产生

62 ^ 5 + 62 ^ 4 + 62 ^ 3 + 62 ^ 2 + 62 ^ 1 = 931.151.402

文本文件中的字符串。