标题: [文本处理] 批处理怎样替换文本并按规定生成数字? [打印本页]
作者: w1983912 时间: 2011-4-7 19:02 标题: [已经解决]批处理怎样替换GBK文本并按规定生成数字?
本帖最后由 w1983912 于 2011-4-18 02:11 编辑
最新消息 15楼朋友的代码 已经差不多可以了 只有一点没实现 希望大家继续帮忙 小小的修改一下 谢谢
GBK 文本 替换并按规定生成数字
1.txt:
INSERT INTO `dede_x` VALUES('217','11','113','1','真爱你的云','45','红苹果连续七年','1012112345','\n红苹果连续七年','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('218','11','113','1','乡巴佬','27','线上线下共赢','1351511238','\n线上线下共赢市将更更加畅通','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('219','2','114','1','a贼之手','35','一次性快餐盒,木盒','1202157603','\n产品外观单价0.14 .6双 纸汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('220','10','115','1','你的','45',KK12果连续七年','1102107622','\nkkkk红苹果连续','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('221','10','115','1','巴佬','27','aaa上线下共赢','1402127624','\n线上55555线下共加畅通','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('222','10','115','1','贼手','35','一次111餐盒,木盒','1002357670','\n产1233333品外观单6双 纸汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('223','10','116','1','11手','3','次1餐盒木盒','1802357620','\n观汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
只有 特征: 第一个 数字 是序号 VALUES('217' 每加一行 数字+1
第2个数字 是文章的 栏目ID
第3个数字 是变化的 也是递增 文章的评论ID 所以 一文章多个评论就会有相同的
第4个数字 是变化的 也是递增 文章某条评论的发表时间 都是10位数字 需要改变的就是这个
比如设置好 第一条(根据第3个数字从1或217开始[最好可以设置能从第几条开始])
第3个数字 相同 那么 第一行 10位数固定增加50 从第2行开始能随机增加100-500就更好拉
从第113文章开始 10位数从 1000010000开始 115 有3行 第一行 固定50
第2行随机获得66 在115 第一行的数字上+66 第3行随机获得394 在115 第2行的数字上+398
115第4行由于是116 所以在115的第一行继续开始+50
如变为:
INSERT INTO `dede_x` VALUES('217','11','113','1','真爱你的云','45','红苹果连续七年','1000010050','\n红苹果连续七年','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('218','11','113','1','乡巴佬','27','线上线下共赢','1000010100','\n线上线下共赢市将更更加畅通','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('219','25','114','1','a贼之手','35','一次性快餐盒,木盒','1000010150','\n产品外观单价0.14 .6双 纸汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('220','10','115','1','你的','45',KK12果连续七年','1000010200','\nkkkk红苹果连续','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('221','10','115','1','巴佬','27','aaa上线下共赢','1000010266','\n线上55555线下共加畅通','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('222','10','115','1','贼手','35','一次111餐盒,木盒','1000010664','\n产1233333品外观单6双 纸汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('223','10','116','1','11手','3','次1餐盒木盒','1000010250','\n观汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
2.txt:--------------------已经有朋友帮忙解决了----------------------------------------------------
INSERT INTO `dede_x2` VALUES('605','11','0','0','0','0','0','爱的诺','34','萍乡频道介入','1302167624','1302168087','大佐','169','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x2` VALUES('606','11','0','0','0','0','0','找不','41','切实解决群众','1302166124','1302167453','叫小乖','81','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x2` VALUES('607','11','0','0','0','0','0','老虎','24','市政府终于下决心','1302161624','1302164636','龙天下','145','12','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x2` VALUES('608','11','0','0','0','0','0','仙人','20','萍乡市个人年收入','1302166624','1302167280','幽风月','24','2','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
2个 10位数 从1000010000
每行的第1个10位数 在上一行数字基础上+50 第2个10位数在本行 第1个10位数基础上随机加5000-10000
这4行 获得的随机数字 比如是 依次 5619 6922 8011 7092
变如下:
INSERT INTO `dede_x2` VALUES('605','11','0','0','0','0','0','爱的诺','34','萍乡频道介入','1000010050','1000015669','大佐','169','1','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x2` VALUES('606','11','0','0','0','0','0','找不','41','切实解决群众','1000010100','1000017022','叫小乖','81','3','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x2` VALUES('607','11','0','0','0','0','0','老虎','24','市政府终于下决心','1000010150','1000018161','龙天下','145','12','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x2` VALUES('608','11','0','0','0','0','0','仙人','20','萍乡市个人年收入','1000010200','1000017292','幽风月','24','2','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0');
-----------------------------------------------------------------------------------------------
发个参考代码 只能按行把10位数生成 之前是我没考虑这个因素....
http://bathome.net/thread-11689-1-1.html
随风 的代码- @echo off
- set /a n=1295097000-3030
- for /f "delims=" %%i in (a.txt) do (
- set "str=%%i"
- set /a n+=3030
- setlocal enabledelayedexpansion
- set aus=!str:'= !
- for %%j in (!aus!) do (
- set var=%%ja&set num=%%j
- for /l %%L in (0 1 9) do (
- set var=!var:%%L=!
- set num=!num:%%L= %%L !
- )
- if "!var!"=="a" (
- set i=0
- for %%j in (!num!) do set /a i+=1
- if !i! equ 10 (
- set num=!num: =!
- for %%j in (!num!) do (
- for %%k in (!n!) do set str=!str:%%j=%%k!
- )
- )
- )
- )
- echo !str!
- endlocal
- )
- pause
复制代码
望哪位朋友帮我变通一下这个文本的解决办法 谢谢
作者: w1983912 时间: 2011-4-9 17:19
................... 没有朋友帮忙么
作者: w1983912 时间: 2011-4-10 17:31
第3天了 没人帮我么??
作者: w1983912 时间: 2011-4-11 22:19
........继续请教
作者: Commander 时间: 2011-4-11 23:13
1# w1983912 - @echo off
- setlocal enabledelayedexpansion
- set num1=1000010000
- cd.>2_new.txt
- for /f "tokens=1-12* delims=," %%a in (2.txt) do (
- set /a num1+=50
- set /a num2=num1+!random!%%5001+5000
- >>2_new.txt echo %%a,%%b,%%c,%%d,%%e,%%f,%%g,%%h,%%i,%%j,'!num1!','!num2!',%%m
- )
复制代码
作者: w1983912 时间: 2011-4-13 13:17
谢谢 楼上的朋友帮我 解决了第2个文本的批处理 很好 希望有知道第1个文本批处理的朋友 能帮帮我 谢谢大家的关注
作者: FOR 时间: 2011-4-13 13:37
估计你再放十天也没办法解决,因为无法理解你的意思。
作者: batman 时间: 2011-4-13 14:04
楼主想要解决问题先去把数字或者语文学好,那个十位数字是第四个数?你怎么数起来的!
后面的描述更是非地球语言。。。
作者: techon 时间: 2011-4-13 14:15
本帖最后由 techon 于 2011-4-13 14:18 编辑
看了半天终于看明白点
大致意思我帮楼主翻译一下
现有如下文本(1.txt)
1.txt:- INSERT INTO `dede_x` VALUES('217','11','113','1','真爱你的云','45','红苹果连续七年','1012112345','\n红苹果连续七年','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('218','11','113','1','乡巴佬','27','线上线下共赢','1351511238','\n线上线下共赢市将更更加畅通','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('219','2','114','1','a贼之手','35','一次性快餐盒,木盒','1202157603','\n产品外观单价0.14 .6双 纸汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('220','10','115','1','你的','45',KK12果连续七年','1102107622','\nkkkk红苹果连续','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('221','10','115','1','巴佬','27','aaa上线下共赢','1402127624','\n线上55555线下共加畅通','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('222','10','115','1','贼手','35','一次111餐盒,木盒','1002357670','\n产1233333品外观单6双 纸汤
- \n\n','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('223','10','116','1','11手','3','次1餐盒木盒','1802357620','\n观汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
复制代码
以第一行为例:
此文本特征: VALUES('217' 其中 数字 217 在下一行中 +1 (这个应该是主键 每行的值唯一)
第2个数字'11' 是文章的 栏目ID (没规律,不用管它,原样输出即可)
第3个数字'113' 是变化的 也是递增 文章的评论ID 所以 一文章多个评论就会有相同的(是递增的一个序列,值会有重复)
另一个个数字'1012112345' 10位数字 是变化的 也是递增 文章某条评论的发表时间(要把这个数字按下面方式处理,并重新输出)
从第一条第一个数字 '217'开始 [最好可以设置能从第几条开始](1或217开始)
如果第3个数字 '113' 相同 那么 第一行 10位数固定增加50 从第2行开始能随机增加100-500就更好拉
后面这个随机数说的不太清楚,是否跟第三个数字相同与不同有关,什么情况下要固定加50 什么情况下要随机加一个数
从第3个数字'113'开始 10位数从 1000010000开始 115 有3行 第一行 固定50
第2行随机获得66 在115 第一行的数字上+66 第3行随机获得394 在115 第2行的数字上+398
115第4行由于是116 所以在115的第一行继续开始+50
下面是由1.txt处理完的一个例子- INSERT INTO `dede_x` VALUES('217','11','113','1','真爱你的云','45','红苹果连续七年','1000010050','\n红苹果连续七年','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('218','11','113','1','乡巴佬','27','线上线下共赢','1000010100','\n线上线下共赢市将更更加畅通','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('219','25','114','1','a贼之手','35','一次性快餐盒,木盒','1000010150','\n产品外观单价0.14 .6双 纸汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('220','10','115','1','你的','45',KK12果连续七年','1000010200','\nkkkk红苹果连续','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('221','10','115','1','巴佬','27','aaa上线下共赢','1000010266','\n线上55555线下共加畅通','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('222','10','115','1','贼手','35','一次111餐盒,木盒','1000010664','\n产1233333品外观单6双 纸汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
- INSERT INTO `dede_x` VALUES('223','10','116','1','11手','3','次1餐盒木盒','1000010250','\n观汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
复制代码
作者: batman 时间: 2011-4-13 14:21
这个处理过程真的是相当相当的简单,楼主的描述真的是相当相当地糟糕,我现在还是相当相当地不明白。。。
作者: w1983912 时间: 2011-4-14 00:33
本帖最后由 w1983912 于 2011-4-14 00:34 编辑
感谢所有朋友的关注和帮忙
楼上的朋友啊 既然处理非常简单 帮我解决一下吧
表达不是很清楚 表达能力确实很很糟糕。。。。。 我初中文化
等了5天了 成心求代码 求帮忙啊 谢谢
作者: w1983912 时间: 2011-4-15 09:33 标题: 批处理怎样替换文本并按规定生成数字?
现有如下文本(1.txt)
1.txt:INSERT INTO `dede_x` VALUES('217','11','113','1','真爱你的云','45','红苹果连续七年','1012112345','\n红苹果连续七年','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('218','11','113','1','乡巴佬','27','线上线下共赢','1351511238','\n线上线下共赢市将更更加畅通','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('219','2','114','1','a贼之手','35','一次性快餐盒,木盒','1202157603','\n产品外观单价0.14 .6双 纸汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('220','10','115','1','你的','45',KK12果连续七年','1102107622','\nkkkk红苹果连续','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('221','10','115','1','巴佬','27','aaa上线下共赢','1402127624','\n线上55555线下共加畅通','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('222','10','115','1','贼手','35','一次111餐盒,木盒','1002357670','\n产1233333品外观单6双 纸汤
\n\n','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('223','10','116','1','11手','3','次1餐盒木盒','1802357620','\n观汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
复制代码以第一行为例:
此文本特征: VALUES('217' 其中 数字 217 在下一行中 +1 (行数 这个不知道是不是主键 每行的值唯一)
第2个数字'11' 是文章的 栏目ID (没规律,不用管它,原样输出即可)
第3个数字'113' 是变化的 也是递增 文章的评论ID 所以 一文章多个评论就会有相同的(是递增的一个序列,值会有重复 根据这个数字的变化而变化 )
另一个个数字'1012112345' 10位数字 是变化的 也是递增 文章某条评论的发表时间(要把这个数字按下面方式处理,并重新输出)
从第一条第一个数字 '217'开始 [最好可以设置能从第几条开始](1或217开始)
如果第3个数字 '113' 相同 那么 第一行 10位数固定增加50 从第2行开始能随机增加100-500就更好拉
后面这个随机数说的不太清楚,跟VALUES后的第三个数字相同与不同有关,什么情况下要固定加50 什么情况下要随机加一个数
比如:从第3个数字'113'开始 10位数从 1000010000开始
第5行是 VALUES('217','11','113'
第4行是 112 1000010000
第5行是 113 1000010050
第6行如果还是 113 1000010050+(100-500之间的一个随机数) 比如获得随机数455 这里就是1000010505
第7行如果还是 113 1000010505+(100-500之间的一个随机数) 比如获得随机数234 这里就是1000010739
第8行如果是 114 那么就是1000010100 第5行(第一个113的数字+50)
下面是由1.txt处理完的一个例子
INSERT INTO `dede_x` VALUES('217','11','113','1','真爱你的云','45','红苹果连续七年','1000010050','\n红苹果连续七年','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('218','11','113','1','乡巴佬','27','线上线下共赢','1000010100','\n线上线下共赢市将更更加畅通','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('219','25','114','1','a贼之手','35','一次性快餐盒,木盒','1000010150','\n产品外观单价0.14 .6双 纸汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('220','10','115','1','你的','45',KK12果连续七年','1000010200','\nkkkk红苹果连续','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('221','10','115','1','巴佬','27','aaa上线下共赢','1000010266','\n线上55555线下共加畅通','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('222','10','115','1','贼手','35','一次111餐盒,木盒','1000010664','\n产1233333品外观单6双 纸汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
INSERT INTO `dede_x` VALUES('223','10','116','1','11手','3','次1餐盒木盒','1000010250','\n观汤\n\n','','0','0','0','0','0','0','0','0','0','0','0');
希望能帮帮忙 谢谢各位了
作者: batman 时间: 2011-4-15 10:35
先感叹一下。。。。
如果你所说的第三个数字如下变化,10位数又要怎么变化:
110 这是第一行
110
113
119
113
113
110
116
118
118
118
110
作者: w1983912 时间: 2011-4-16 13:22
13# batman
这3位数字 不是你说的那样 而是有顺序的递增
110 这是第一行 1000010000
110 1000010000+随机(100-500) 都是110 就在上一行的基础上 随机加
111 1000010000+50 如果110+1 就在110的第一行 +50
112 1000010050+50
113 1000010100+50
113 1000010150+随机(100-500)
113 [1000010150+随机(100-500)]+随机(100-500) [这里代表上一行的数字]
114 1000010150+50
115 1000010200+50
115 1000010250+随机(100-500)
115 [1000010250+随机(100-500)]+随机(100-500) [这里代表上一行的数字]
115 继续在获得上一行的数字基础上+随机(100-500)的数
希望能尽快解决拉 谢谢
作者: batman 时间: 2011-4-16 18:34
本帖最后由 batman 于 2011-4-16 19:24 编辑
不知道楼主是这个意思不:- @echo off&setlocal enabledelayedexpansion
- (for /f "delims=" %%a in (1.txt) do (
- set "str=%%a"
- for /f "tokens=4,9 delims=,'" %%a in ("!str!") do (
- if not defined number (
- set /a number=1000010000,add=0,_%%a=1
- ) else (
- if not defined _%%a (
- set /a number+=50,add=0,_%%a=1
- ) else (
- set /a add=!random!%%401+100
- )
- )
- set /a ans=number+add
- for %%a in (!ans!) do echo !str:'%%b'='%%a'!
- )
- ))>tem
- del /q 1.txt&ren tem 1.txt
- start 1.txt
复制代码
作者: w1983912 时间: 2011-4-17 10:38
15# batman
论坛啊论坛 不知道为何 会突然一下 网站无法访问 我碰到N次了 其他所有站都正常的拉
以下是我今天早上4点多回的帖子。。。。。。。
辛苦了 朋友 谢谢你 还差一点点
就是这个113 注意看哦 第一个113 是1000010150 第2个113是第1个113的数字 +随机(100-500) 第3个是在第2个113的数字 再 +随机(100-500) 一直这样+下去 如果仍然是113的话 第N个获得的10位数字 必须要大于 第(N-1)个也就是上一行获得的10位数字
110 这是第一行 1000010000
110 1000010000+随机(100-500) 都是110 就在上一行的基础上 随机加
111 1000010000+50 如果110+1 就在110的第一行 +50
112 1000010050+50
113 1000010100+50
113 1000010150+随机(100-500)
113 [1000010150+随机(100-500)]+随机(100-500) [这里代表上一行的数字]
114 1000010150+50
115 1000010200+50
115 1000010250+随机(100-500)
115 [1000010250+随机(100-500)]+随机(100-500) [这里代表上一行的数字]
115 继续在获得上一行的数字基础上+随机(100-500)的数
代码很好 就差一点拉 希望能帮忙帮到低 感谢
作者: batman 时间: 2011-4-17 11:39
- @echo off&setlocal enabledelayedexpansion
- (for /f "delims=" %%a in (1.txt) do (
- set "str=%%a"
- for /f "tokens=4,9 delims=,'" %%a in ("!str!") do (
- if not defined number (
- set /a number=1000010000,_%%a=number
- ) else (
- if not defined _%%a (
- set /a number+=50,_%%a=number
- ) else (
- set /a _%%a+=!random!%%401+100
- )
- )
- for %%a in (!_%%a!) do echo !str:'%%b'='%%a'!
- )
- ))>tem
- del /q 1.txt&ren tem 1.txt
- start 1.txt
复制代码
作者: w1983912 时间: 2011-4-18 02:11
17# batman
已经完美解决 帮了我大忙了 谢谢这位朋友 多次帮忙 也谢谢 所有关注过的朋友 非常感谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |