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

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

现有固定的模板 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>
复制代码
谢谢!新年快乐!!

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

TOP

回复 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

TOP

本帖最后由 went 于 2021-1-31 22:12 编辑

回复 3# 灯塔彭于晏
最后一句什么意思
BUG把delims=[-]# "改成delims=[-]#"就行了

TOP

是不是这个意思
  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
复制代码

TOP

回复 5# went


    是这个意思了,谢谢您! 新年快乐!

TOP

返回列表