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

回复 1# _avatar_

再给两个版本(分别存为批处理脚本文件 *.bat 运行),都用 cmd+jscript 混编方式,省略了临时文件。一版是直接采用 for 分隔器一步到位,二版是直接采用 jscript 正则匹配一步到位...

第一版 test-1.bat
  1. @set @v=1 /* &echo off
  2. for /f tokens^=2^delims^=:^" %%i in ('type "entry.json"^|cscript /nologo /e:jscript "%~f0"') do echo,%%i
  3. pause&exit/b */
  4. m=WSH.stdin.readall().match(/"title":"[^"]+"/), WSH.echo(m[0]), WSH.quit()
复制代码
第二版 test-2.bat
  1. @set @v=1 /* &echo off
  2. for /f %%i in ('type "entry.json"^|cscript /nologo /e:jscript "%~f0"') do echo,%%i
  3. pause&exit/b */
  4. m=WSH.stdin.readall().match(/[^"]+(?=","type_tag")/), WSH.echo(m[0]), WSH.quit()
复制代码

TOP

回复 5# czjt1234


    感谢指路,大概有点底了,慢慢学习。

TOP

回复 4# _avatar_


本网站,首页,最下方,VBScript / JScript 在线参考
搜索 wscript对象
1

评分人数


QQ 20147578

TOP

回复 3# ppll2030

非常感谢,原来是我对 //B 参数理解有误。

另外,不知道哪里可以看 WSH 这个对象相关的API手册? 看了您的代码之后,我发现只需要将 后面 if 里的修改成 WSH.echo() 输出,并且去掉 //B 参数就可以了。
所以,不知道在哪可以学习 WSH 这个对象的具体用法?

PS: !txt:9,-1! 那是写错了,漏了个 ~ 。

TOP

回复 2# _avatar_



红色为修改部分。JS获取内容后添加11111,并从第9个字符开始截取后面的字符


@echo off
setlocal EnableDelayedExpansion
color a
rem 从一个json文件中提取指定内容


>"%tmp%\j.js" echo;var m=WSH.StdIn.ReadAll().match(/("title"):"[^"]+"/);if(m)WSH.echo(m[0]);

for /f "delims=" %%i in ('type entry.json ^| cscript /nologo -e:jscript "%tmp%\j.js"') do (
  set "txt=%%i11111"
  echo !txt:~9,-1!
)
pause
exit
1

评分人数

TOP

结果是提取到了,但是显示完结果之后直接就到 pause 代码了,没有执行 do 里面的两行代码。

TOP

返回列表