[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 aloha20200628 于 2024-9-18 21:59 编辑

回复 15# _avatar_

你用7楼代码处理1楼示例文件的结果也会出现这种问题吗?我用win7/win8.1/win10测试均正常无误...

TOP

回复 16# aloha20200628


    你测试的时候  entry.json 文件应该是保存的 ANSI 编码吧,需要 entry.json 是 utf-8 编码测试,因为脚本的作用是自动读取 entry.json 文件来提取标题,而 entry.json 文件有很多,编码都是 utf8

TOP

  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

评分人数


QQ 20147578

TOP

本帖最后由 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

评分人数

TOP

回复 18# czjt1234


    你这个的确可以,vbs 我不懂,感谢指教!

TOP

回复 19# aloha20200628


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

    有打算学习一下 powershell 的,非常感谢指导!。

TOP

返回列表