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

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

本帖最后由 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班
1

评分人数

希望替换成什么样子呢?

TOP

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

TOP

回复 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
复制代码
1

评分人数

TOP

本帖最后由 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. }
复制代码

TOP

  年纪上去了 , 力不从心啊  ,这样好了我经常给论坛捐助吧

TOP

回复 2# GNU


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

TOP

回复 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就是各个班级了!

谢谢 !

TOP

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

回复 8# kongzhezhi


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

找4楼修改批处理~

大概就是像这样  for /f %%a in (班级名.txt) do

TOP

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

评分人数

TOP

回复 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班书友会

TOP

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

TOP

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

TOP

楼上怎么答的,我居然没看懂,楼主来个样本[要求格式],注意个人隐私部分,替换后样本[要求格式],是否用第三方,是否包含特殊字符,是否可以建立临时文件夹和文本,是否归档,这样会便于处理问题
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

回复 13# CrLf


    也不是什么伸手党      术业有专攻嘛   ,谢谢大家的帮忙!
已经解决! 祝大家工作顺利!

TOP

返回列表