标题: [文本处理] 批处理能否对数字串重排序号? [打印本页]
作者: 每天几分 时间: 2012-9-29 11:26 标题: 批处理能否对数字串重排序号?
【示例】:
1
1
1
1
1
1
1
1
1
1
1
……
1
1
1
……
1
1
……
【要求按顺序排列】:
1
2
3
4
5
6
7
8
9
10
11
……
999
1000
1001
……
9999
10000
……
作者: batman 时间: 2012-9-29 11:34
示例中全是1。。。不明白如何变成序列?
作者: 每天几分 时间: 2012-9-29 12:11
回复 2# batman
额,其实是这样的,1是个变量,第一列可以是:
1
3
5
7
3
8
6
9
……
之类的不规则顺序。
如果它们前后有固定的标志,那就简单了,我可以用宏脚本处理的,但去掉了固定标志,用批处理还能不能按顺序排列呢?
比如:
第1章
第3章
第5章
第7章
……
第N章
用下面的宏脚本可以按顺序排序成:
第1章
第2章
第3章
第4章
……
第N章- document.selection.Replace("\n\n\n第","hhhhhhhhhhh第",eeFindNext | eeReplaceAll);
- document.selection.Replace("\n","jjjjjjjjj",eeFindNext | eeReplaceAll);
- document.selection.Replace("hhhhhhhhhhh","\n",eeFindNext | eeReplaceAll);
- document.selection.Replace(".*.章 jjjjjjjjj","",nFlags);
- document.selection.Replace("jjjjjjjjj","",eeFindNext | eeReplaceAll);
- document.selection.PageDown(false,50000);
- document.selection.EndOfLine(false,eeLineView);
- document.selection.NewLine(1);
- document.selection.PageUp(false,50000);
-
-
- document.selection.Text="aaaaaa1bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa2bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa3bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa4bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa5bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa6bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa7bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa8bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa9bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa10bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa11bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa12bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa13bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa14bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa15bbbbbb";
- ……
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa3997bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa3998bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa3999bbbbbb";
- document.selection.StartOfLine(false,eeLineView | eeLineHomeText);
- document.selection.LineDown(false,1);
- document.selection.Text="aaaaaa4000bbbbbb";
- ……
复制代码
作者: batman 时间: 2012-9-29 12:52
- @echo off&setlocal enabledelayedexpansion
- for /f %%a in (a.txt) do (
- set "str=..........%%a"
- set "str=!str:~-10!"
- set "!str!=a"
- )
- (for /f "delims=.=" %%a in ('set .') do echo %%a)>$
- move $ a.txt
- start a.txt
-
-
复制代码
作者: 每天几分 时间: 2012-9-29 13:05
回复 4# batman
额,俺说的按顺序是将原来的每行的1,1,1……变成1,2,3……这种顺序,是要替换的。
再如下面10列:
1
3
5
6
7
8
9
2
6
8
……
要先替换不正确的序号,并按顺序排列:
1
2
3
4
5
6
7
8
9
10
作者: batman 时间: 2012-9-29 19:12
请楼主一次性将问题描述清楚
别人帮人不能靠猜的。。。
作者: 每天几分 时间: 2012-9-30 11:34
回复 6# batman
。。俺认为示例里面已经很清楚了啊。。。 额。。
作者: CrLf 时间: 2012-9-30 20:32
我也完全没看懂
作者: Seder 时间: 2012-9-30 21:02
没看懂的路过
作者: 每天几分 时间: 2012-9-30 22:13
回复 8# CrLf
好吧,退而求其次,我尽量解释清楚。网络小说看过吧,拿《诛仙》为例,它的章节目录是这样的:
第1章 青云
第2章 迷局
第3章 宏愿
第4章 惊变
第5章 入门
第6章 拜师
第7章 初始
第8章 传艺
第9章 佛与道
第10章 幽谷
但有人为了防盗版,故意把正确目录变成如下:
第1章 青云
第1章 迷局
第1章 宏愿
第1章 惊变
第1章 入门
第1章 拜师
第1章 初始
第1章 传艺
第1章 佛与道
第1章 幽谷
看懂了吗?所有的序号都变成了1。
而我所提出的【按顺序排列】就是将下面【错误的序号】替换为上面【正确的序号】。明白?很难理解么。。。
作者: garyng 时间: 2012-10-5 10:33
所以你只要For /f在加上一个记录行号的变量,处理每行,把1换成现在的行号不久行了么?
要么,直接把要操作的文件传上来
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |