[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样替换文本并按规定生成数字?

现有如下文本(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');


希望能帮帮忙  谢谢各位了
1

评分人数

17# batman


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

TOP

  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
复制代码
***共同提高***

TOP

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)的数


代码很好  就差一点拉  希望能帮忙帮到低  感谢

TOP

本帖最后由 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
复制代码
***共同提高***

TOP

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)的数



希望能尽快解决拉  谢谢

TOP

先感叹一下。。。。
如果你所说的第三个数字如下变化,10位数又要怎么变化:
110 这是第一行
110
113
119
113
113
110
116
118
118
118
110
***共同提高***

TOP

本帖最后由 w1983912 于 2011-4-14 00:34 编辑

感谢所有朋友的关注和帮忙
楼上的朋友啊 既然处理非常简单     帮我解决一下吧  
表达不是很清楚 表达能力确实很很糟糕。。。。。 我初中文化
等了5天了  成心求代码 求帮忙啊 谢谢

TOP

这个处理过程真的是相当相当的简单,楼主的描述真的是相当相当地糟糕,我现在还是相当相当地不明白。。。
***共同提高***

TOP

本帖最后由 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');
复制代码

TOP

楼主想要解决问题先去把数字或者语文学好,那个十位数字是第四个数?你怎么数起来的!

后面的描述更是非地球语言。。。
***共同提高***

TOP

估计你再放十天也没办法解决,因为无法理解你的意思。

TOP

谢谢 楼上的朋友帮我 解决了第2个文本的批处理  很好  希望有知道第1个文本批处理的朋友 能帮帮我  谢谢大家的关注

TOP

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. )
复制代码

TOP

........继续请教

TOP

返回列表