Board logo

标题: [文本处理] 批处理如何将文本里指定字符串替换成另一个文本里列出的内容 [打印本页]

作者: kongzhezhi    时间: 2016-10-25 09:16     标题: 批处理如何将文本里指定字符串替换成另一个文本里列出的内容

本帖最后由 pcl_test 于 2016-10-25 18:53 编辑

如何批量替换
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会


我在另外一个txt(班级名.txt)里存放着全校班级名称,一行一个,格式如下:
一1班
一2班
一3班
一4班
一5班
一6班
一7班
一8班
二1班
二2班
二3班
二4班
二5班
二6班
作者: GNU    时间: 2016-10-25 09:41

希望替换成什么样子呢?
作者: 523066680    时间: 2016-10-25 09:49

本帖最后由 523066680 于 2016-10-25 11:00 编辑

这是小学生 还是 小学教师!?

还有,这届伸手党的表达能力令人担忧啊!

应该是按 "班级名.txt"里面的班级每个套
成绩表  人数统计 男生 女生 学生班群 教师群 运动员 三好生 书友会
  1. use Encode;
  2. use utf8;
  3. binmode(STDOUT, ":encoding(gbk)");
  4. my @title = qw/成绩表 人数统计 男生 女生 学生班群 教师群 运动员 三好生 书友会/;
  5. my @show;
  6. for my $classname (<DATA>)
  7. {
  8.     $classname =~ s/\r?\n//;
  9.     @show = map { $classname . $_ } @title;
  10.     print join("_", @show), "\n";
  11. }
  12. __DATA__
  13. 一1班
  14. 一2班
  15. 一3班
  16. 一4班
  17. 一5班
  18. 一6班
  19. 一7班
  20. 一8班
  21. 二1班
  22. 二2班
  23. 二3班
  24. 二4班
  25. 二5班
  26. 二6班
复制代码

作者: aa77dd@163.com    时间: 2016-10-25 10:54

回复 3# 523066680

哦, 伸手党啊
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. mode 150
  4. set "txt=四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会"
  5. for %%a in (
  6. 一1班
  7. 一2班
  8. 一3班
  9. 一4班
  10. 一5班
  11. 一6班
  12. 一7班
  13. 一8班
  14. 二1班
  15. 二2班
  16. 二3班
  17. 二4班
  18. 二5班
  19. 二6班
  20. ) do echo;!txt:四3班=%%a!
  21. pause
复制代码

作者: 523066680    时间: 2016-10-25 11:01

本帖最后由 523066680 于 2016-10-25 11:25 编辑

回复 4# aa77dd@163.com


    咦 批处理比perl简洁!
也模仿此格式,坐等codegay发python (可惜还是少了个搞ruby的,三缺一啊)
  1. use utf8;
  2. binmode(STDOUT, ":encoding(gbk)");
  3. my @title = qw/成绩表 人数统计 男生 女生 学生班群 教师群 运动员 三好生 书友会/;
  4. for my $name (qw/
  5. 一1班
  6. 一2班
  7. 一3班
  8. 一4班
  9. 一5班
  10. 一6班
  11. 一7班
  12. 一8班
  13. 二1班
  14. 二2班
  15. 二3班
  16. 二4班
  17. 二5班
  18. 二6班
  19. /)
  20. {
  21.     print join("_", map { $name . $_ } @title ), "\n";
  22. }
复制代码

作者: kongzhezhi    时间: 2016-10-25 12:41

  年纪上去了 , 力不从心啊  ,这样好了我经常给论坛捐助吧
作者: kongzhezhi    时间: 2016-10-25 15:39

回复 2# GNU


    就是用  txt里面的  各个班级来替换 四3班
其实那txt里还有很多班级的,我没有一一列出!
所以还是比较希望 班级名称写在txt里!
作者: kongzhezhi    时间: 2016-10-25 15:41

回复 5# 523066680


    你好朋友 ,可能我没有列清楚,其实班级名称很多很多的!而且每次后面也不一定就是   男生 女生  ,所以关键就是替换 班级名字

就是用  txt里面的  各个班级来替换 四3班
其实那txt里还有很多班级的,我没有一一列出!
所以还是比较希望 班级名称写在txt里!

我可能在一个txt里放上几十几百行一样的

四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会
四3班成绩表_四3班人数统计_四3班男生_四3班女生_四3学生班群_四3班教师群_四3班运动员_四3班三好生_四3班书友会


然后用班级.txt 里的班级名称去替换

这样得到的新的txt就是各个班级了!

谢谢 !
作者: 523066680    时间: 2016-10-25 16:05

本帖最后由 523066680 于 2016-10-25 16:09 编辑

回复 8# kongzhezhi


      我的是Perl代码,需要另外安装Perl环境的

找4楼修改批处理~

大概就是像这样  for /f %%a in (班级名.txt) do
作者: GNU    时间: 2016-10-25 16:45

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%i in ('type "班级名.txt"') do (
  4.     for /f %%j in ('type "原始文件.txt"') do (
  5.         set "LineOld=%%j"
  6.         set LineNew=!LineOld:四3班=%%i!
  7.         >>"新文件_%%i.txt" echo !LineNew!
  8.     )
  9. )
复制代码

作者: kongzhezhi    时间: 2016-10-25 17:07

回复 10# GNU


    你好 ,我运行了一下 ,有一点点出入!
目前运行结果是 有多少班级生成了多少txt
需求是仅仅生成一个txt  如:   结果.txt

结果txt里大概是这样的

一1班成绩表_一1班人数统计_一1班男生_一1班女生_一1学生班群_一1班教师群_一1班运动员_一1班三好生_一1班书友会
一2班成绩表_一2班人数统计_一2班男生_一2班女生_一2学生班群_一2班教师群_一2班运动员_一2班三好生_一2班书友会
一3班成绩表_一3班人数统计_一3班男生_一3班女生_一3学生班群_一3班教师群_一3班运动员_一3班三好生_一3班书友会
一4班成绩表_一4班人数统计_一4班男生_一4班女生_一4学生班群_一4班教师群_一4班运动员_一4班三好生_一4班书友会
一5班成绩表_一5班人数统计_一5班男生_一5班女生_一5学生班群_一5班教师群_一5班运动员_一5班三好生_一5班书友会
作者: GNU    时间: 2016-10-25 18:16

回复 11# kongzhezhi
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. type nul > "结果.txt"
  4. for /f %%i in ('type "班级名.txt"') do (
  5.     for /f %%j in ('type "原始文件.txt"') do (
  6.         set "LineOld=%%j"
  7.         set LineNew=!LineOld:四3班=%%i!
  8.         >>"结果.txt" echo !LineNew!
  9.     )
  10. )
复制代码

作者: CrLf    时间: 2016-10-25 21:11

这届伸手党的表达能力令人担忧啊!
作者: /zhqsystem/zhq    时间: 2016-10-25 21:26

楼上怎么答的,我居然没看懂,楼主来个样本[要求格式],注意个人隐私部分,替换后样本[要求格式],是否用第三方,是否包含特殊字符,是否可以建立临时文件夹和文本,是否归档,这样会便于处理问题
作者: kongzhezhi    时间: 2016-10-25 23:13

回复 13# CrLf


    也不是什么伸手党      术业有专攻嘛   ,谢谢大家的帮忙!
已经解决! 祝大家工作顺利!
作者: GNU    时间: 2016-10-31 11:23

回复 14# /zhqsystem/zhq


    这么简单的问题都看不懂,还好意思说人家是伸手党。
作者: /zhqsystem/zhq    时间: 2016-10-31 20:47

回复 16# GNU
无语,没点眼药水吧,你看懂了为什么在2楼去追问?如果已有完整答案为什么没有标记已解决?说明问题依旧没有解决需要追问或是上传必要文本,路径,改变后文本,每个人的解题方式不一样,需要这些数据来综合整理思路,难道全校只有4年级?
作者: GNU    时间: 2016-11-1 08:53

回复 17# /zhqsystem/zhq


    15楼说已经解决了,祝你好运。




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