Board logo

标题: [文本处理] 如何用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行对应 ‘转换字典表’,楼主可据此格式增减...
  1. @echo off &chcp 65001>nul
  2. (for /f "delims=" %%a in (1.txt) do (
  3. set "s=%%a"&setlocal enabledelayedexpansion
  4. for %%s in (
  5. "絃=弦"
  6. "凢=凡"
  7. "縳=縛"
  8. "湏=須"
  9. "㬰=臾"
  10. "宻=密"
  11. "慿=憑"
  12. "煖=暖"
  13. "蹟=跡"
  14. "錄=録"
  15. "吳=吴"
  16. "顚=顛"
  17. ) do set "s=!s:%%~s!"
  18. echo,!s!
  19. endlocal
  20. ))>2.txt
  21. pause&exit/b
复制代码

作者: aloha20200628    时间: 2024-8-3 15:58

本帖最后由 aloha20200628 于 2024-8-3 16:09 编辑

回复 1# 学习1995

帮楼主再省点事儿...
假设转换字典表原始数据有数百行如下
絃        弦
凢        凡
縳        縛
...  ...  ...

已存为utf-8编码文件 "u8.dic",并置于当前目录下,用以下代码可一气呵成楼主所求...
  1. @echo off &chcp 65001>nul &setlocal enabledelayedexpansion
  2. for /f "tokens=*" %%a in (u8.dic) do (set/a "n+=1"&set "_!n!=%%a")
  3. (for /f "delims=" %%a in (1.txt) do (
  4. set "s=%%a"
  5. for /l %%n in (1,1,!n!) do for /f "tokens=1-2" %%x in ("!_%%n!") do set "s=!s:%%x=%%y!"
  6. echo,!s!
  7. ))>2.txt
  8. endlocal&pause&exit/b
复制代码

作者: 学习1995    时间: 2024-8-3 19:41

回复 3# aloha20200628

非常感谢!很完美地解决了我的需求!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2