Board logo

标题: [数值计算] 【已完成】求助批处理如何输出两位字母的所有组合? [打印本页]

作者: silenttea    时间: 2022-8-5 15:53     标题: 【已完成】求助批处理如何输出两位字母的所有组合?

本帖最后由 silenttea 于 2022-8-6 22:43 编辑

我想将他们输入到一个文件上,代码如下,(不完全)
  1. set lenw=2
  2. set "word=a b c d e f g h i j k l m n o p q r s t u v w x y z "
  3. for /l %%i in (1,1,%lenw%) do (
  4. for /l %%j in (1,1,%%i) do (
  5. for %%k in (%word%) do (
  6. set "_%%k=%_%%k%%%k"
  7.                         ::本想用变量不断迭代一个个值,后来发现所需变量太多,方法不对
  8. )
复制代码
求助一种通用的任意长度的字母组合,谢谢(#^.^#)
作者: qixiaobin0715    时间: 2022-8-5 16:23

两个字母的组合:
  1. @echo off
  2. set letters=a b c d e f g h i j k l m n o p q r s t u v w x y z
  3. for %%i in (%letters%) do (
  4.     for %%j in (%letters%) do (
  5.         echo,%%i%%j
  6.     )
  7. )
  8. pause
复制代码

作者: qixiaobin0715    时间: 2022-8-5 16:26

笨办法,n个字母组合就用n个循环。
作者: Batcher    时间: 2022-8-6 19:42

回复 1# silenttea


批处理根据输入列出排列组合
http://bbs.bathome.net/thread-1701-1-1.html

批处理变量嵌套+递归法实现排列组合
http://bbs.bathome.net/thread-6354-1-1.html#pid41184

批处理输出若干个字符或数字的排列组合
http://bbs.bathome.net/thread-11959-1-1.html#pid76175
作者: silenttea    时间: 2022-8-6 22:43

回复 4# Batcher


    太感谢了,之前没搜索对,没看到这个帖子
作者: silenttea    时间: 2022-8-6 23:00

回复 4# Batcher
  1. @echo off&setlocal enabledelayedexpansion
  2. call:perm "a b c xy z"
  3. pause
  4. :perm <"c1 c2 ..."> // code by plp
  5. setlocal&set "s=%~1 "&if "!s: =!" == ""  (echo %~2)else for %%b in (%~1)do call:perm "!s:%%b =!" "%~2 %%b"
复制代码
大佬,请问一下 “:perm <"c1 c2 ..."> // code by plp” 这行 <"c1 c2 ...">的作用或者意义是什么,实在是找不到相关解释,删除标签后那段,运行结果也没影响但速度变慢了很多




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2