标题: [文本处理] 如何用bat脚本批量将左边的字,逐一替换成右边的字? [打印本页]
作者: 学习1995 时间: 2024-8-3 13:09 标题: 如何用bat脚本批量将左边的字,逐一替换成右边的字?
例子:
AAAAAA絃AAAAAAA凢AAAAAAA縳AAAAAAA湏AAAAAAAAAAA㬰AAAAAAA宻AAAAAAA慿AAAAAAAAAAAAA煖AAAAAAA蹟AAAAAAA錄AAAAAAA吳AAAAAAA顚AAAAAAA
待处理的TXT文档中有几万字。需要将其中数百个的异体字替换成通用字。如:
絃 弦
凢 凡
縳 縛
湏 須
㬰 臾
宻 密
慿 憑
煖 暖
蹟 跡
錄 録
吳 吴
顚 顛
如何批量将左边的字,逐一替换成右边的字?求大神指点。感谢!
作者: aloha20200628 时间: 2024-8-3 14:27
本帖最后由 aloha20200628 于 2024-8-3 14:39 编辑
回复 1# 学习1995
以下代码存为 test.bat 在当前目录中运行,须用utf-8编码保存(因转换字典表中有异体字超出简中编码字符集)
假定 1.txt 为当前目录下的源文件,2.txt 为转换结果文件
代码中5-16行对应 ‘转换字典表’,楼主可据此格式增减...
- @echo off &chcp 65001>nul
- (for /f "delims=" %%a in (1.txt) do (
- set "s=%%a"&setlocal enabledelayedexpansion
- for %%s in (
- "絃=弦"
- "凢=凡"
- "縳=縛"
- "湏=須"
- "㬰=臾"
- "宻=密"
- "慿=憑"
- "煖=暖"
- "蹟=跡"
- "錄=録"
- "吳=吴"
- "顚=顛"
- ) do set "s=!s:%%~s!"
- echo,!s!
- endlocal
- ))>2.txt
- pause&exit/b
复制代码
作者: aloha20200628 时间: 2024-8-3 15:58
本帖最后由 aloha20200628 于 2024-8-3 16:09 编辑
回复 1# 学习1995
帮楼主再省点事儿...
假设转换字典表原始数据有数百行如下
絃 弦
凢 凡
縳 縛
... ... ...
已存为utf-8编码文件 "u8.dic",并置于当前目录下,用以下代码可一气呵成楼主所求...
- @echo off &chcp 65001>nul &setlocal enabledelayedexpansion
- for /f "tokens=*" %%a in (u8.dic) do (set/a "n+=1"&set "_!n!=%%a")
- (for /f "delims=" %%a in (1.txt) do (
- set "s=%%a"
- for /l %%n in (1,1,!n!) do for /f "tokens=1-2" %%x in ("!_%%n!") do set "s=!s:%%x=%%y!"
- echo,!s!
- ))>2.txt
- endlocal&pause&exit/b
复制代码
作者: 学习1995 时间: 2024-8-3 19:41
回复 3# aloha20200628
非常感谢!很完美地解决了我的需求!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |