标题: [数值计算] 批处理如何遍历生成8位数全部数值?每位可选数字不同 [打印本页]
作者: vcaqua 时间: 2013-8-8 23:45 标题: 批处理如何遍历生成8位数全部数值?每位可选数字不同
如21113210,第1位和第6位有0,1,2三个数可选,第5位可选3,4,其他位可以选0,1。只找到多位二进制数的遍历方法,帖子在这里,谢谢各位。
http://www.bathome.net/archiver/tid-13140.html
作者: CrLf 时间: 2013-8-9 00:33
本帖最后由 CrLf 于 2013-8-9 17:33 编辑
对于排列组合,可以这样:- @echo off&setlocal enabledelayedexpansion
- set /a all=3*2*2*2*2*3*2*2
- (for /l %%a in (1 1 !all!) do (
- set /a "n=%%a,v=100000000 + n/192%%3*10000000 + n/96%%2*1000000 + n/48%%2*100000 + n/24%%2*10000 + (n/12%%2+3)*1000 + n/4%%3*100 + n/2%%2*10 + n%%2"
- echo !v:~1!
- ))>list.txt
- pause
复制代码
作者: weichenxiehou 时间: 2013-8-9 05:49
本帖最后由 weichenxiehou 于 2013-8-9 12:50 编辑
- @echo off&setlocal enabledelayedexpansion
- (for /l %%a in (100000000 1 121114211) do set n=%%a&echo,!n:~1!)|findstr "^[012][01][01][01][34][012][01][01]$"
复制代码
作者: 523066680 时间: 2013-8-9 09:06
本帖最后由 523066680 于 2013-8-9 09:30 编辑
既然大家都这么精简,那我就写长一点了。
楼主,是全排列不?
理论上应该有 (2^5)*3*3*2 = 576 个结果- @echo off
- setlocal enabledelayedexpansion
- set S5=3 4
- set S1=0 1 2
- set S6=0 1 2
- for /l %%x in (1,1,8) do (
- if defined S%%x (
- set "f%%x=for %%%%x in (!S%%x!) do ("
- ) else (
- set "f%%x=for %%%%x in (0 1) do ("
- )
- )
- set count=0
- %f1%%f2%%f3%%f4%%f5%%f6%%f7%%f8%
- set /a count+=1
- echo %%1%%2%%3%%4%%5%%6%%7%%8
- ))))))))
- echo 共有%count%个结果
- pause
复制代码
作者: terse 时间: 2013-8-9 11:57
回复 2# CrLf
楼主的意思是这样吧- set /a "n=%%a,v=100000000 + n/96%%3*10000000 + n/96%%2*1000000 + n/48%%2*100000 + n/24%%2*10000 + (n/12%%2+3)*1000 + n/4%%3*100 + n/2%%2*10 + n%%2"
复制代码
作者: vcaqua 时间: 2013-8-9 13:40
感谢各位,非常精彩,命令行输出都很好,是576个全排列结果没错。
再问一句如果加入>List.txt应该怎么做?
作者: CrLf 时间: 2013-8-9 13:48
回复 5# terse
错了一位,已修改,感谢指正!
作者: 523066680 时间: 2013-8-9 14:44
本帖最后由 523066680 于 2013-8-9 15:05 编辑
回复 7# CrLf
1.228个结果 2.有重复项
没修改到吧,拿terse的贴上去就OK了
作者: terse 时间: 2013-8-9 15:01
再加一个循环- set /a all=3*2*2*2*2*3*2*2
复制代码
作者: 523066680 时间: 2013-8-9 15:02
回复 6# vcaqua
以下是一个可选方式:
开头先type nul>list.txt
找到有echo 的句子加 >>list.txt
作者: vcaqua 时间: 2013-8-9 15:18
谢谢大家
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |