标题: [文本处理] 【已解决】批处理 10选4的代码 如何扩展运用到10选5 [打印本页]
作者: 思想之翼 时间: 2016-1-4 16:54 标题: 【已解决】批处理 10选4的代码 如何扩展运用到10选5
本帖最后由 思想之翼 于 2016-1-6 09:41 编辑
http://www.bathome.net/viewthrea ... ghlight=&page=2
以上代码适用于10选4 扩展运用到10选5 试着自己解决了问题。见4楼。
作者: aa77dd@163.com 时间: 2016-1-4 18:37
楼主这些干什么用的
作者: 回家路上 时间: 2016-1-4 19:05
O(∩_∩)O哈!开拓别人的思维~~~~~~
作者: 思想之翼 时间: 2016-1-4 19:13
本帖最后由 思想之翼 于 2016-1-6 09:38 编辑
回复 2# aa77dd@163.com
自己修改的- @ECHO OFF&setlocal enabledelayedexpansion
- for /l %%i in (0,1,9) do set /a _%%i=%%i+1
- for /l %%i in (1,1,4) do (
- for /l %%j in (!_%%i!,1,5) do (
- set /an+=1
- set "$!n!=%%i %%j"
- )
- )
- for /l %%i in (0,1,9) do (
- for /l %%j in (0,1,9) do (
- set /a "$%%i_%%j=(%%i+%%j)%%10"
- )
- )
-
- for /l %%i in (1001,1,1252) do (
- set n=%%i
- md "c:/数据/数据1/!n:~1!" 2>nul
- )
- set n=1000
- for /l %%a in (1,1,9) do (
- for /l %%b in (!_%%a!,1,10) do (
- for /l %%c in (!_%%b!,1,10) do (
- for /l %%d in (!_%%c!,1,10) do (
- for /l %%e in (!_%%d!,1,10) do (
- set /an+=1
- for /l %%f in (100000,1,199999) do (
- set s=%%f
- for /f "tokens=1-10" %%0 in ("!$%%a! !$%%b! !$%%c! !$%%d! !$%%e!") do (
- for /f "tokens=1-5" %%i in ("!s:~%%0,1!_!s:~%%1,1! !s:~%%2,1!_!s:~%%3,1! !s:~%%4,1!_!s:~%%5,1! !s:~%%6,1!_!s:~%%7,1! !s:~%%8,1!_!s:~%%9,1!") do (
- set /a t=1!$%%i!!$%%j!!$%%k!!$%%l!!$%%m!
- >>"c:/数据/数据1/!n:~1!/!t:~1!.txt" set /p =!s:~1! <nul
- )
- )
- )
- )
- )
- )
- ))
- pause
复制代码
作者: aa77dd@163.com 时间: 2016-1-4 19:13
回复 3# 思想之翼
楼主用过 Mathematica 吗? 或者 其他的数学软件
作者: aa77dd@163.com 时间: 2016-1-4 21:00
回复 7# 思想之翼
如果你安装了 Mathematica
用下面的代码, 你就可以看到眉目- T = {a, b, c, d, e};
- P = Subsets[T, {2}]
- Q = Map[(Mod[(#[[1]] + #[[2]]), 10]) &, P]
- Q = Subsets[Q, {4}]
-
- T1 = Table[{a, b, c, d}, {a, 0, 9}, {b, 0, 9}, {c, 0, 9}, {d, 0, 9}];
- T1 = Flatten[T1, 3]
复制代码
作者: codegay 时间: 2016-1-4 21:32
回复 9# aa77dd@163.com
在线用 wolfram 可以吗
作者: aa77dd@163.com 时间: 2016-1-4 21:41
回复 10# codegay
没试过, 我自己也很久没有用 Mathematica 了, 本来会用的函数也不多, 上面用到的几个函数都是刚刚查了帮助和在线搜索后才基本了解的
楼主的问题, 始终都没有离开数学, 用这个数学软件来解决, 是非常理想的, 应该仅用几行代码就完全可以实现, 比如 5 行以内
作者: aa77dd@163.com 时间: 2016-1-4 21:55
本帖最后由 aa77dd@163.com 于 2016-1-4 22:11 编辑
回复 12# 思想之翼
来源于 for /? 的帮助- tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代
- 的 for 本身。这会导致额外变量名称的分配。m-n
- 格式为一个范围。通过 nth 符号指定 mth。如果
- 符号字符串中的最后一个字符星号,
- 那么额外的变量将在最后一个符号解析之后
- 分配并接受行的保留文本。
-
-
- FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
-
- ...
-
- %i 在 for 语句中显式声明,%j 和 %k 是通过
- tokens= 选项隐式声明的。可以通过 tokens= 一行
- 指定最多 26 个符号,只要不试图声明一个高于字母 "z" 或
- "Z" 的变量。请记住,FOR 变量是单一字母、分大小写和全局的变量;
- 而且,不能同时使用超过 52 个。
复制代码
这种帮助信息 真的不好明白, 我当初一样了明白不了
来实际的, 在 cmd 的命令行界面运行- echo off & for /f "tokens=2-4" %i in ("头 胸 腹 臀 尾") do echo;[%h],[%i],[%j],[%k],[%l]
复制代码
结果是
[%h],[胸],[腹],[臀],[%l]
头 胸 腹 臀 尾 左边的东东 默认用刀, 呃,不, 是空格为分隔被分解成 5 个部分, 可以分配到最多 5 个令牌, tokens=2-4 指定了只取其中的 第 2 个--第 4 个分配给令牌们, 所以 头 和 尾 都被砍掉了
胸 从令牌 %i 开始分配, 接着按顺序来嘛, 腹 分配给 %j, 臀 分配给 %k. 分(body)完毕, 没有流血, 不算血腥吧
作者: WHY 时间: 2016-1-4 21:57
回复 5# 思想之翼
批处理 for 引用变量时一般是用单个字母或数字前面加上%%来表示(例如%%i),%%10会被认为是非法的。
楼主试试把27行%%1改成%%0,28行从%%0到%%9
作者: codegay 时间: 2016-1-4 22:20
回复 4# 回家路上
所以他常年处于问人要代码。。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |