标题: [文本处理] 如何用批处理或vbs将文本每行数字段进行两两组合 [打印本页]
作者: qzwifi 时间: 2012-5-14 17:29 标题: 如何用批处理或vbs将文本每行数字段进行两两组合
本帖最后由 pcl_test 于 2016-7-19 12:31 编辑
如何用批处理或vbs将文本数字行进行复式
比如:
文本a.txt的内容为:
01 02 03 04 05 06
11 12 13 14 15 16
21 22 23 24 25 26
处理后复式为:
01 02
01 03
01 04
01 05
01 06
02 03
02 04
02 05
02 06
03 04
03 05
03 06
04 05
04 06
05 06
11 12
11 13
11 14
11 15
11 16
12 13
12 14
12 15
12 16
13 14
13 15
13 16
14 15
14 16
15 16
21 22
21 23
21 24
21 25
21 26
22 23
22 24
22 25
22 26
23 24
23 25
23 26
24 25
24 26
25 26
a.txt里面每一行的数字都与本行内的数字进行复式组合
上面是以复式2位数为例,需要复式组合为2位、3位、4位、5位的都可以
处理后保存为b.txt
例如 01 02 03 04 05 06
复式3位的就是:
01 02 03
01 02 04
01 02 05
01 02 06
01 03 04
01 03 05
01 03 06
01 04 05
01 04 06
01 05 06
02 03 04
02 03 05
02 03 06
02 04 05
02 04 06
02 05 06
03 04 05
03 04 06
03 05 06
04 05 06
4位的是:
01 02 03 04
01 02 03 05
01 02 03 06
01 02 04 05
01 02 04 06
01 02 05 06
01 03 04 05
01 03 04 06
01 03 05 06
01 04 05 06
02 03 04 05
02 03 04 06
02 03 05 06
02 04 05 06
03 04 05 06
5位的是:
01 02 03 04 05
01 02 03 04 06
01 02 03 05 06
01 02 04 05 06
01 03 04 05 06
02 03 04 05 06
作者: apang 时间: 2012-5-14 18:37
试试看- @echo off
- for /f "delims=" %%i in (a.txt) do (
- setlocal enabledelayedexpansion
- for %%a in (%%i) do set/a n+=1&set "A!n!=%%a"
- for /l %%b in (1 1 !n!) do (
- set/a m=%%b+1
- for /l %%c in (!m! 1 !n!) do echo !A%%b! !A%%c!
- )
- endlocal
- )
- pause
复制代码
作者: qzwifi 时间: 2012-5-14 19:01
回复 2# apang
楼上你好,需要的代码要能更改生成的位数跟保存为b.txt
比如我要把01 02 03 04 05 06复式为3位、4位、5位只需要在代码里修改一下位数便可
您所提供的代码只能复式为2位而且不能保存为b.txt
希望修改一下,谢谢!
作者: gawk 时间: 2012-5-14 19:05
回复 3# qzwifi - @echo off
- (for /f "delims=" %%i in (a.txt) do (
- setlocal enabledelayedexpansion
- for %%a in (%%i) do set/a n+=1&set "A!n!=%%a"
- for /l %%b in (1 1 !n!) do (
- set/a m=%%b+1
- for /l %%c in (!m! 1 !n!) do echo !A%%b! !A%%c!
- )
- endlocal
- ))>b.txt
复制代码
作者: qzwifi 时间: 2012-5-14 19:25
本帖最后由 qzwifi 于 2012-5-14 19:40 编辑
回复 4# gawk
楼上提供的试了下是可以的,不过只是复式2位的,能否把复式为 3位 4位 5位的代码也写出来。。
还有就是复式为6位与7位的,希望也能提供一下。。比如 01 02 03 04 05 06 07 08 来复式6位与7位
或者教一下小弟如何直接修改想复式的位数。。谢谢!
作者: apang 时间: 2012-5-14 19:58
- @echo off
- (for /f "delims=" %%i in (a.txt) do (
- setlocal enabledelayedexpansion
- for %%a in (%%i) do set/a n+=1&set "A!n!=%%a"
- for /l %%b in (1 1 !n!) do (
- set/a n1=%%b+1
- for /l %%c in (!n1! 1 !n!) do (
- set/a n2=%%c+1
- for /l %%d in (!n2! 1 !n!) do echo !A%%b! !A%%c! !A%%d!
- )
- )
- endlocal
- ))>b.txt
复制代码
复式3位的,多一位就多一级嵌套,感觉很恐怖。。。
作者: qzwifi 时间: 2012-5-14 20:19
回复 6# apang
楼上大哥辛苦了,您的代码正是我想要的效果。能否把 4位、5位、6位、7位的都写出来,小弟不胜感激!
作者: qzwifi 时间: 2012-5-14 21:30
回复 6# apang
能写到4位或5位吗?确实有需要,望帮帮忙。。将非常感谢。。
作者: apang 时间: 2012-5-14 21:43
4位。其余你依葫芦画瓢。。。- @echo off
- (for /f "delims=" %%i in (a.txt) do (
- setlocal enabledelayedexpansion
- for %%a in (%%i) do set/a n+=1&set "A!n!=%%a"
- for /l %%b in (1 1 !n!) do (
- set/a n1=%%b+1
- for /l %%c in (!n1! 1 !n!) do (
- set/a n2=%%c+1
- for /l %%d in (!n2! 1 !n!) do (
- set/a n3=%%d+1
- for /l %%e in (!n3! 1 !n!) do echo !A%%b! !A%%c! !A%%d! !A%%e!
- )
- )
- )
- endlocal
- ))>b.txt
复制代码
作者: qzwifi 时间: 2012-5-14 22:05
本帖最后由 qzwifi 于 2012-5-14 22:07 编辑
回复 9# apang
搞懂了,非常感谢您的帮助,谢谢!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |