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

[文本处理] 【已解决】BAT代码从json文件只提取指定字段的值哪里有问题?

[复制链接]
发表于 2024-9-18 21:43:28 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-9-18 21:59 编辑

回复 15# _avatar_

你用7楼代码处理1楼示例文件的结果也会出现这种问题吗?我用win7/win8.1/win10测试均正常无误...
 楼主| 发表于 2024-9-19 01:02:20 | 显示全部楼层
回复 16# aloha20200628


    你测试的时候  entry.json 文件应该是保存的 ANSI 编码吧,需要 entry.json 是 utf-8 编码测试,因为脚本的作用是自动读取 entry.json 文件来提取标题,而 entry.json 文件有很多,编码都是 utf8
发表于 2024-9-19 09:29:40 | 显示全部楼层
  1. rem 另存为 ANSI 编码 bat
  2. ' & cls & cscript.exe /nologo /e:vbscript "%~f0" %* & pause & exit /b

  3. f = "entry.json"    '源文件
  4. u = "UTF-8"         '源文件的编码

  5. Set oWshShell = CreateObject("WScript.Shell")
  6. Set oFSO = CreateObject("Scripting.FileSystemObject")
  7. s = oFSO.GetParentFolderName(WScript.ScriptFullname)
  8. oWshShell.CurrentDirectory = s
  9. Set oRegExp = New RegExp
  10. oRegExp.Global     = True
  11. oRegExp.MultiLine  = True
  12. oRegExp.IgnoreCase = True
  13. oRegExp.Pattern    = """title"":"".*?"""
  14. Set oStream = CreateObject("ADODB.Stream")
  15. oStream.Type    = 2    'adTypeText
  16. oStream.Mode    = 3    'adModeReadWrite
  17. oStream.Charset = u
  18. oStream.Open()
  19. oStream.LoadFromFile f
  20. s = ""
  21. For Each oMatch In oRegExp.Execute(oStream.ReadText())
  22.     wsh.Echo oMatch.Value
  23. Next
复制代码

评分

参与人数 2技术 +2 收起 理由
_avatar_ + 1 乐于助人
buyiyang + 1 乐于助人

查看全部评分

发表于 2024-9-19 14:13:40 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-9-19 14:28 编辑

回复 15# _avatar_

调用 vbs/jscript 或下载或预装 grep/sed/awk/python/... 等都有方法可解,但在批处代码中直接调用 powershell 功能可以尽量简化这个问题,假设源文件 entry.json 是 utf-8 编码,以下代码存为 test.bat 运行...

  1. @echo off & powershell "$p=((gc 'entry.json' -raw -enc 'utf8') -match '[^"""]+(?=""","""type_tag""")');$matches[0]">"0.0"&set/p v=<"0.0"
  2. echo,%v%&del/q "0.0"&pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
_avatar_ + 1 乐于助人

查看全部评分

 楼主| 发表于 2024-9-20 20:26:30 | 显示全部楼层
回复 18# czjt1234


    你这个的确可以,vbs 我不懂,感谢指教!
 楼主| 发表于 2024-9-20 20:28:42 | 显示全部楼层
回复 19# aloha20200628


    实际上我是在学习批处理,要解决问题本身我是有方法的,比如使用 nodejs。

    有打算学习一下 powershell 的,非常感谢指导!。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 19:43 , Processed in 0.010508 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表