Board logo

标题: [文本处理] 批处理如何把文本a的顺序按照文本b排列好,谢谢 [打印本页]

作者: yyz219    时间: 2022-2-24 10:31     标题: 批处理如何把文本a的顺序按照文本b排列好,谢谢

本帖最后由 yyz219 于 2022-2-24 11:32 编辑

批处理如何把文本a的顺序按照文本b排列好,谢谢
【a.txt是bat生成的(文字准确无误,但顺序要调整),b.txt是“妙手OCR ”抓取的(顺序准确无误,但是文字有可能有误)。由此,用加引号和.lnk不是好方法】

a.txt(需要重新调整顺序的文本)
  1. "常用.lnk"
  2. "菜单排序.lnk"
  3. "特殊符号.lnk"
  4. "整理碎片.lnk"
  5. "清TEMP+.lnk"
  6. "Ctrl.Shif.G.lnk"
  7. "替换 还原.lnk"
  8. "更新数据.lnk"
  9. "清 ie 临时.lnk"
  10. "清理TEMP.lnk"
  11. "Ctrl.Shif.A.lnk"
  12. "恢复后要.lnk"
  13. "抓文字好.lnk"
  14. "启动抓图+.lnk"
  15. "刷新+.vbs.lnk"
  16. "图标缓存.lnk"
  17. "搜索文件.lnk"
  18. "个人文件.lnk"
复制代码
b.txt(希望a.txt按照这里的顺序排列)
  1. 替换还原
  2. 整理碎片
  3. 菜单排序
  4. 个人文件
  5. 更新数据
  6. 搜索文件
  7. 刷新+.vbs
  8. 图标缓存
  9. 清TEMP+
  10. 清理TEMP
  11. 清ie临时
  12. 启动抓图+
  13. Ctrl.Shif.G
  14. 抓文字好
  15. 恢复后要
  16. Ctrl.Shif.A
  17. 特殊符号
  18. 常用
复制代码

作者: Echo11    时间: 2022-2-24 11:54

如何OCR不能准确识别的话,还是不太好弄的。不确定性可不止你给的例子这么多。
作者: yyz219    时间: 2022-2-24 12:01

回复 2# Echo11

就当作OCR是准确的,弄一下试试看。
作者: Echo11    时间: 2022-2-24 13:11

本帖最后由 Echo11 于 2022-2-24 13:21 编辑

为方便反复调试,我把结果输出到了c.txt
  1. (
  2. for /F "usebackq tokens=1 delims=" %%b in ("b.txt") do for /F "usebackq tokens=1 delims=" %%a in ("a.txt") do ECHO.%%a|find /i "%%b" >nul 2>nul && ECHO.%%a
  3. )>"c.txt"
  4. ECHO.结束.
  5. pause>nul
  6. EXIT
复制代码
1、显然,这种方法是会有问题的。
2、你的a.txt每行结尾好像有个空格
作者: qixiaobin0715    时间: 2022-2-24 13:17

本帖最后由 qixiaobin0715 于 2022-2-24 13:19 编辑

这样空格就不会有影响:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in (a.txt) do (
  4.     set str=%%~na
  5.     set str=!str: =!
  6.     set "_!str!=%%a"
  7. )
  8. (for /f "delims=" %%i in (b.txt) do echo,!_%%i!)>a.txt
  9. pause
复制代码

作者: Echo11    时间: 2022-2-24 13:24

其实空格我想说的是:
文件名中的空格去掉还是会有多匹配的可能,比如: "a b.lnk"和"a    b.lnk"显然是2个文件
作者: yyz219    时间: 2022-2-24 13:27

回复 4# Echo11

我试一试先 谢谢




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