标题: [文本处理] 批处理怎样对应位置依次插入……谢谢了。 [打印本页]
作者: 灯塔彭于晏 时间: 2021-1-31 20:14 标题: 批处理怎样对应位置依次插入……谢谢了。
现有固定的模板 a.txt ,内容如下:- <div class="xinxi444">
- <figure class="info444">
- <table class="xinxi333">
- <tbody>
- <tr><td>姓名:</td><td>AAA</td></tr>
- <tr><td>员工编号:</td><td>BBB</td></tr>
- <tr><td>描述:</td><td>CCC</td></tr>
- <tr><a href="https://baidu.com/gongsi/BBB.jpg">人物图片</a></tr>
- </tbody>
- </table>
- </figure>
- <img src="https://baidu.com/bumen/BBB.jpg"></div>
复制代码
和固定内容b.txt ,内容如下:
[#オオオオオ - Enji - 63289492]
现在想把 オオオオオ (也就是[# 到第一个 - 号之间的内容),插入到CCC的位置。
Enji (第一个 - 和第二个 -之间的内容),插入到AAA的位置。
最后的数字(第二个 - 到最后的 ] 之间的数字),插入到所有的BBB中(共3处)。
最终效果如下:- <div class="xinxi444">
- <figure class="info444">
- <table class="xinxi333">
- <tbody>
- <tr><td>姓名:</td><td>Enji</td></tr>
- <tr><td>员工编号:</td><td>63289492</td></tr>
- <tr><td>描述:</td><td>オオオオオ</td></tr>
- <tr><a href="https://baidu.com/gongsi/63289492.jpg">人物图片</a></tr>
- </tbody>
- </table>
- </figure>
- <img src="https://baidu.com/bumen/63289492.jpg"></div>
复制代码
谢谢!新年快乐!!
作者: went 时间: 2021-1-31 21:16
- @echo off & cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "src=b.txt"
- set "dest=a.txt"
- (
- for /f "usebackq tokens=1-3 delims=[-]# " %%i in ("%src%") do (
- for /f "usebackq delims=" %%a in ("%dest%") do (
- set "line=%%a"
- set "line=!line:CCC=%%i!"
- set "line=!line:AAA=%%j!"
- set "line=!line:BBB=%%k!"
- echo !line!
- )
- )
- )>"%dest%_NEW"
- move /y "%dest%_NEW" "%dest%"
- pause&exit
复制代码
作者: 灯塔彭于晏 时间: 2021-1-31 21:49
回复 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
作者: went 时间: 2021-1-31 22:09
本帖最后由 went 于 2021-1-31 22:12 编辑
回复 3# 灯塔彭于晏
最后一句什么意思
BUG把delims=[-]# "改成delims=[-]#"就行了
作者: went 时间: 2021-1-31 22:31
是不是这个意思- @echo off & cd /d "%~dp0"
- setlocal enabledelayedexpansion
- set "src=b.txt"
- set "dest=a.txt"
- (
- for /f "usebackq tokens=1-3 delims=[-]#" %%i in ("%src%") do (
- set "C=%%i"
- set "A=%%j"
- set "B=%%k"
- for %%a in (A B C) do (
- if "!%%a:~0,1!"==" " set "%%a=!%%a:~1!"
- if "!%%a:~-1!"==" " set "%%a=!%%a:~0,-1!"
- )
- for /f "usebackq delims=" %%a in ("%dest%") do (
- set "line=%%a"
- call set "line=!line:CCC=%%C%%!"
- call set "line=!line:AAA=%%A%%!"
- call set "line=!line:BBB=%%B%%!"
- echo !line!
- )
- )
- )>"%dest%_NEW"
- move /y "%dest%_NEW" "%dest%"
- pause&exit
复制代码
作者: 灯塔彭于晏 时间: 2021-1-31 22:54
回复 5# went
是这个意思了,谢谢您! 新年快乐!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |