Board logo

标题: [文本处理] 批处理怎样替换文本并按规定生成数字? [打印本页]

作者: 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   
随风 的代码
  1. @echo off
  2. set /a n=1295097000-3030
  3. for /f "delims=" %%i in (a.txt) do (
  4.    set "str=%%i"
  5.    set /a n+=3030
  6.    setlocal enabledelayedexpansion
  7.    set aus=!str:'= !
  8.    for %%j in (!aus!) do (
  9.        set var=%%ja&set num=%%j
  10.        for /l %%L in (0 1 9) do (
  11.           set var=!var:%%L=!
  12.           set num=!num:%%L= %%L !
  13.        )
  14.        if "!var!"=="a" (
  15.           set i=0
  16.           for %%j in (!num!) do set /a i+=1
  17.           if !i! equ 10 (
  18.              set num=!num: =!
  19.              for %%j in (!num!) do (
  20.                  for %%k in (!n!) do set str=!str:%%j=%%k!
  21.              )
  22.            )
  23.         )
  24.     )
  25.     echo !str!
  26.     endlocal
  27. )
  28. 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
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set num1=1000010000
  4. cd.>2_new.txt
  5. for /f "tokens=1-12* delims=," %%a in (2.txt) do (
  6.     set /a num1+=50
  7.     set /a num2=num1+!random!%%5001+5000
  8.     >>2_new.txt echo %%a,%%b,%%c,%%d,%%e,%%f,%%g,%%h,%%i,%%j,'!num1!','!num2!',%%m
  9. )
复制代码

作者: 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:
  1. INSERT INTO `dede_x` VALUES('217','11','113','1','真爱你的云','45','红苹果连续七年','1012112345','\n红苹果连续七年','','0','0','0','0','0','0','0','0','0','0','0');
  2. INSERT INTO `dede_x` VALUES('218','11','113','1','乡巴佬','27','线上线下共赢','1351511238','\n线上线下共赢市将更更加畅通','','0','0','0','0','0','0','0','0','0','0','0');
  3. 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');
  4. INSERT INTO `dede_x` VALUES('220','10','115','1','你的','45',KK12果连续七年','1102107622','\nkkkk红苹果连续','','0','0','0','0','0','0','0','0','0','0','0');
  5. 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');
  6. INSERT INTO `dede_x` VALUES('222','10','115','1','贼手','35','一次111餐盒,木盒','1002357670','\n产1233333品外观单6双 纸汤
  7. \n\n','','0','0','0','0','0','0','0','0','0','0','0');
  8. 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处理完的一个例子
  1. INSERT INTO `dede_x` VALUES('217','11','113','1','真爱你的云','45','红苹果连续七年','1000010050','\n红苹果连续七年','','0','0','0','0','0','0','0','0','0','0','0');
  2. INSERT INTO `dede_x` VALUES('218','11','113','1','乡巴佬','27','线上线下共赢','1000010100','\n线上线下共赢市将更更加畅通','','0','0','0','0','0','0','0','0','0','0','0');
  3. 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');
  4. INSERT INTO `dede_x` VALUES('220','10','115','1','你的','45',KK12果连续七年','1000010200','\nkkkk红苹果连续','','0','0','0','0','0','0','0','0','0','0','0');
  5. 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');
  6. 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');
  7. 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 编辑

不知道楼主是这个意思不:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (1.txt) do (
  3.     set "str=%%a"
  4.     for /f "tokens=4,9 delims=,'" %%a in ("!str!") do (
  5.         if not defined number (
  6.            set /a number=1000010000,add=0,_%%a=1
  7.            ) else (
  8.            if not defined _%%a (
  9.               set /a number+=50,add=0,_%%a=1
  10.               ) else (
  11.               set /a add=!random!%%401+100
  12.            )
  13.         )
  14.         set /a ans=number+add
  15.     for %%a in (!ans!) do echo !str:'%%b'='%%a'!
  16.     )
  17. ))>tem
  18. del /q 1.txt&ren tem 1.txt
  19. 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

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%a in (1.txt) do (
  3.     set "str=%%a"
  4.     for /f "tokens=4,9 delims=,'" %%a in ("!str!") do (
  5.         if not defined number (
  6.            set /a number=1000010000,_%%a=number
  7.            ) else (
  8.            if not defined _%%a (
  9.               set /a number+=50,_%%a=number
  10.               ) else (
  11.               set /a _%%a+=!random!%%401+100
  12.            )
  13.         )
  14.     for %%a in (!_%%a!) do echo !str:'%%b'='%%a'!
  15.     )
  16. ))>tem
  17. del /q 1.txt&ren tem 1.txt
  18. start 1.txt
复制代码

作者: w1983912    时间: 2011-4-18 02:11

17# batman


已经完美解决  帮了我大忙了  谢谢这位朋友 多次帮忙 也谢谢 所有关注过的朋友  非常感谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2