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

[文本处理] 批处理怎样对应位置依次插入……谢谢了。

[复制链接]
发表于 2021-1-31 20:14:37 | 显示全部楼层 |阅读模式
现有固定的模板 a.txt ,内容如下:
  1. <div class="xinxi444">
  2. <figure class="info444">
  3. <table class="xinxi333">
  4. <tbody>
  5. <tr><td>姓名:</td><td>AAA</td></tr>
  6. <tr><td>员工编号:</td><td>BBB</td></tr>
  7. <tr><td>描述:</td><td>CCC</td></tr>
  8. <tr><a href="https://baidu.com/gongsi/BBB.jpg">人物图片</a></tr>
  9. </tbody>
  10. </table>
  11. </figure>
  12. <img src="https://baidu.com/bumen/BBB.jpg"></div>
复制代码
和固定内容b.txt ,内容如下:
[#オオオオオ - Enji - 63289492]


现在想把 オオオオオ (也就是[# 到第一个 - 号之间的内容),插入到CCC的位置。
Enji (第一个 - 和第二个 -之间的内容),插入到AAA的位置。
最后的数字(第二个 - 到最后的 ] 之间的数字),插入到所有的BBB中(共3处)。
最终效果如下:
  1. <div class="xinxi444">
  2. <figure class="info444">
  3. <table class="xinxi333">
  4. <tbody>
  5. <tr><td>姓名:</td><td>Enji</td></tr>
  6. <tr><td>员工编号:</td><td>63289492</td></tr>
  7. <tr><td>描述:</td><td>オオオオオ</td></tr>
  8. <tr><a href="https://baidu.com/gongsi/63289492.jpg">人物图片</a></tr>
  9. </tbody>
  10. </table>
  11. </figure>
  12. <img src="https://baidu.com/bumen/63289492.jpg"></div>
复制代码
谢谢!新年快乐!!
发表于 2021-1-31 21:16:52 | 显示全部楼层
  1. @echo off & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. set "src=b.txt"
  4. set "dest=a.txt"
  5. (
  6.         for /f "usebackq tokens=1-3 delims=[-]# " %%i in ("%src%") do (
  7.                 for /f "usebackq delims=" %%a in ("%dest%") do (
  8.                         set "line=%%a"
  9.                         set "line=!line:CCC=%%i!"
  10.                         set "line=!line:AAA=%%j!"
  11.                         set "line=!line:BBB=%%k!"
  12.                         echo !line!
  13.                 )
  14.         )
  15. )>"%dest%_NEW"
  16. move /y "%dest%_NEW" "%dest%"
  17. pause&exit
复制代码
 楼主| 发表于 2021-1-31 21:49:13 | 显示全部楼层
回复 2# went


    你好,很好用,表示感谢。

其次想咨询一个小BUG,和1个小问题。
BUG部分:
如果b.txt中的内容是:[#优秀 5分 - Enji - 63289492]  
优秀和5分 中有个空格的话,插入就错位了。
如果优秀和5分中没有空格,比如[#优秀5分 - Enji - 63289492],插入就不会出错,请问,如果有空格的话,怎么改?

小问题部分:
现在是1个文本b.txt对应1个a.txt,如果b.txt里有很多行内容,比如:
[#优秀 1分 - Enj2i - 632839492]
[#优秀 2分 - Enji3 - 6322389492]
[#优秀 3分 - Enji4 - 632894492]
[#优秀 1分 - Enji5 - 632895492]

如何通过一个b.txt的内容,直接生成包含全部内容的a.txt
发表于 2021-1-31 22:09:39 | 显示全部楼层
本帖最后由 went 于 2021-1-31 22:12 编辑

回复 3# 灯塔彭于晏
最后一句什么意思
BUG把delims=[-]# "改成delims=[-]#"就行了
发表于 2021-1-31 22:31:35 | 显示全部楼层
是不是这个意思
  1. @echo off & cd /d "%~dp0"
  2. setlocal enabledelayedexpansion
  3. set "src=b.txt"
  4. set "dest=a.txt"
  5. (
  6.         for /f "usebackq tokens=1-3 delims=[-]#" %%i in ("%src%") do (
  7.                 set "C=%%i"
  8.                 set "A=%%j"
  9.                 set "B=%%k"
  10.                 for %%a in (A B C) do (
  11.                         if "!%%a:~0,1!"==" " set "%%a=!%%a:~1!"
  12.                         if "!%%a:~-1!"==" " set "%%a=!%%a:~0,-1!"
  13.                 )
  14.                 for /f "usebackq delims=" %%a in ("%dest%") do (
  15.                         set "line=%%a"
  16.                         call set "line=!line:CCC=%%C%%!"
  17.                         call set "line=!line:AAA=%%A%%!"
  18.                         call set "line=!line:BBB=%%B%%!"
  19.                         echo !line!
  20.                 )
  21.         )
  22. )>"%dest%_NEW"
  23. move /y "%dest%_NEW" "%dest%"
  24. pause&exit
复制代码
 楼主| 发表于 2021-1-31 22:54:50 | 显示全部楼层
回复 5# went


    是这个意思了,谢谢您! 新年快乐!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 09:21 , Processed in 0.017179 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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