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

[文本处理] [已解决] 批处理如何从多个文本逐行读取内容组合合并

[复制链接]
发表于 2010-8-8 17:33:16 | 显示全部楼层
不是人家不帮你,是人家不好帮你。
原因是你太罗嗦还没有把问题讲清楚。
你把A 、B 、C 的范例给出..........
 楼主| 发表于 2010-8-8 22:07:35 | 显示全部楼层
随风版主你好,其实我的范文在 6楼已经大致给出来了!
C.txt就是一个里面包括了即一个"即将被替换的文本" , 核心就是这个 "即将被替换的文本" ,我说让c.txt调用而不是把内容放在bat里面就是想让c.txt更加可编辑性!

比如c.txt 是如下内容

111111111111111111"即将被替换的文本"22222222222222222"即将被替换的文本"33333333333333333


就是让bat处理用a.txt里面的文本去依次替换并生成新的txt

我也将a.txt和b.txt再把举例的写出来吧:

①A.TXT  里面大体这样的,一行一个,每行没数字限制,下面是若干举例:

上海
北京
深圳
天津
广州
香港
南京
苏州
杭州
......等等城市名称!

②B.txt 里面是一些常用短语.也是一行一个,每行也没有数字限制,下面是若干举例:

金玉其外败絮其中
八仙过海各显神通
经验比理论来得实在
有则改之无则加勉
......等等类似的常用语!


Ps:我测试下来,9楼的caruko大哥的是成功的! 不足之处就是把c.txt内容放置在bat里面,没有单独调用让c.txt更加具有可编辑性!

谢谢大家
发表于 2010-8-8 22:35:08 | 显示全部楼层
唉~~~
既然楼主只能交代这么多已知条件,就试着写写吧
代码条件
1、a、b、c、文本中不能含半角感叹号
2、c.txt 第一行为标题,即:在这一行前面随机加入b.txt的行,c.txt从第二行起开始替换城市名,需注意的是,比如替换的是“北京”那么c.txt中的所有“北京”词组都会替换掉,不管在正文中它是不是城市名都会被替换
3、c.txt中的空行会被忽略
4、c.txt中的第一行“聊天”前面的字符为需替换的城市名
代码未测试,有问题跟帖。。。
  1. @echo off&SETLOCAL ENABLEDELAYEDEXPANSION
  2. if not exist newtxt\ md newtxt
  3. for /f "delims=" %%a in (b.txt) do (
  4.    set /a n+=1&set ".!n!=%%a"
  5. )
  6. for /f "delims=" %%a in (a.txt) do (
  7.    set /a w=!random!%%n+1,m=1
  8.    for /f "delims=" %%b in (c.txt) do (
  9.           set num=%%b
  10.       if !m! equ 1 (
  11.              for /f "delims=聊" %%I in ("%%b") do set "m=%%I"
  12.                  for /f "delims=" %%D in ("!m!") do set num=!num:%%D=%%a!
  13.          for %%i in (!w!) do echo !.%%i!,!NUM!>"newtxt\%%a.txt"
  14.          ) else (
  15.                    for /f "delims=" %%D in ("!m!") do set num=!num:%%D=%%a!
  16.                    echo !Num!>>"newtxt\%%a.txt"
  17.            )
  18.         )
  19. )
  20. start newtxt
复制代码
 楼主| 发表于 2010-8-8 23:12:44 | 显示全部楼层
哎,还是你们思维比较缜密,我到现在才明白为啥让我把c.txt写的更加完善点的用途了!

随风版主,上面的测试完全没有问题,但是,确实因为我的疏忽,所以我明白你为啥要指定一个 "聊" 为特定字符了!
我现在反过来给你指定 即将被替换的文本为  "指定替换"  ! 也就是说c.txt里面无论标题或者正文只要碰到 "指定替换"  他就按a.txt里面的逐一替换!


这样c.txt形如如下范文:
111111111111指定替换22222222222 →这里是标题
3333333333333指定替换44444444指定替换555555555指定替换66666666指定替换77777777指定替换99999 →这里是正文

这样就不要指定标题具体到哪个字前面需要替换了,是吗?

谢谢随风大哥的帮忙


相信你明白我意思了,再麻烦你一下!有问题我在线到继续跟帖。。。
发表于 2010-8-8 23:42:21 | 显示全部楼层
  1. @echo off&SETLOCAL ENABLEDELAYEDEXPANSION
  2. if not exist newtxt\ md newtxt
  3. set var=指定替换
  4. set /p str=<c.txt
  5. for /f "delims=" %%a in (b.txt) do set /a n+=1&set ".!n!=%%a"
  6. for /f "delims=" %%a in (a.txt) do (
  7.    set /a w=!random!%%n+1
  8.    for %%i in (!w!) do echo !.%%i!,!str:%var%=%%a!>"newtxt\%%a.txt"
  9.    for /f "skip=1 delims=" %%b in (c.txt) do (
  10.       set num=%%b
  11.       set num=!num:%var%=%%a!
  12.       echo !Num!>>"newtxt\%%a.txt"
  13.     )
  14. )
  15. start newtxt
复制代码
 楼主| 发表于 2010-8-9 01:15:17 | 显示全部楼层
3ks 随风,你是最棒的!
晚安!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 03:55 , Processed in 0.018748 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表