• 【中国梦·大国工匠篇】鸡蛋上钻孔显真功 潜心坚守一线练就绝活儿 2019-06-11
  • 【理上网来·喜迎十九大】塞尔维亚驻华大使:中国的发展是其他国家望尘莫及的 2019-06-10
  • 六大工程培育发展新动能 2019-06-10
  • 为推动上合组织发展提供中国智慧、中国方案 2019-05-29
  • 覆盖31亿人口!一图告诉你上合组织有多牛 2019-05-28
  • 德味手表了解一下 徕卡推出L1,L2机械表德味手表徕卡推出L1-手机行情 2019-05-28
  • 西部网(陕西新闻网)www.cnwest.com 2019-05-27
  • 穿越千年 感悟周公 2019-05-27
  • 2017年度一级建造师考试成绩已发布 2019-05-27
  • 【大考2018】2018高考首日众生相(组图) 2019-05-27
  • 浙江舟山定海区一国企非党管理人员涉嫌受贿被查 2019-05-23
  • 让山里娃感受智慧科技乐趣 2019-05-19
  • 香港田径锦标赛飞人夺冠 2019-05-19
  • 诽谤侮辱英烈可追刑责 2019-05-14
  • 图解:十二字“洞见”2017年保险业 2019-04-28
  • 批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
    [批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
    返回列表 发帖

    广东十一选5:[文本处理] 【已解决】批处理BAT如何使用VBS(或者纯vbs)解析JSON

    本帖最后由 kaze 于 2019-3-10 18:29 编辑

    想要弄一个BAT如何使用VBS(或者纯vbs)解析JSON,因为JAVASCRIPT解析非常方便
    var obj = JSON.parse(ds);
    弄了一段代码,但是不知道为什么就是不成功,
    要求不要已经发布的纯BAT代码,非常复杂,看不懂,基本不能通用。有没有人能够帮忙修改一下代码
     广东十一选五计划软件 www.qe-ar.com 
    1. <!-- :
    2. @echo off
    3. echo 取金山词霸每日一句数据
    4. pause
    5. set www=
    6. set /p www=输入 "网址/" :http
    7. echo %www%
    8. echo;%www%|mshta "%~f0"
    9. exit /b
    10. -->
    11. <script>
    12. var fso = new ActiveXObject("Scripting.FileSystemObject");
    13. var StdIn = fso.GetStandardStream(0);
    14. var StdOut = fso.GetStandardStream(1);
    15. var url=StdIn.ReadLine();
    16. function Get(N) {var X = new ActiveXObject("Msxml2.XMLHTTP");
    17. X.open("GET", N, false);
    18. X.send("");
    19. return X.responseText;
    20. }
    21. var s1='1';
    22. var d={};
    23. for (var i = 0; i < 10; i++) {
    24. date = new Date();
    25. yd = +date - 86400000*i;
    26. d = new Date(yd);
    27. var yd= d.getFullYear()+"-"+(d.getMonth()+1)+"-"+d.getDate();
    28. url = "//open.iciba.com/dsapi/?date="+yd;
    29. ds = Get(url);
    30. if (ds){
    31. //var obj = JSON.parse(ds);
    32. //var MottoEN=obj.content;
    33. //var MottoCN=obj.note;
    34. //var MottoCN2=obj.translation;
    35. //var MottoDate=obj.dateline;
    36. //var d[i]=yd+"\n"+MottoEN+"\n"+MottoCN+"\n"+MottoCN2+"\n";
    37. //alert('yd\nMottoEN\nMottoCN\nMottoCN2\n');
    38. var d[i]=ds;
    39. var data=d[i]+"\n";
    40. }
    41. }
    42. fso.CreateTextFile('X:\ciba.txt',2,true).Write(data);
    43. close();
    44. </script>
    复制代码

    1. /*&cls
    2. @echo off
    3. title 代码可用,扫码头像,感谢赞助;有什么问题,可加QQ956535081及时沟通
    4. cd /d "%~dp0"
    5. cscript -nologo -e:jscript "%~f0" 30
    6. pause&exit /b
    7. */
    8. var fso=new ActiveXObject('Scripting.FileSystemObject');
    9. var http=new ActiveXObject('MSXML2.XMLHTTP');
    10. var today=new Date();
    11. var result='', n=WSH.Arguments(0);
    12. for(var i=0;i<Number(n);i++){
    13.     var day=new Date(today-86400000*i);
    14.     var tmpday=day.getFullYear()+"-"+(day.getMonth()+1)+"-"+day.getDate();
    15.     var daily=getinfo(gettext(tmpday));
    16.     result+=daily+'\r\n\r\n';
    17. }
    18. //WSH.echo(result);
    19. var f=fso.CreateTextFile('dailysentence.txt', 2, true);
    20. f.Write(result);
    21. f.Close();
    22. WSH.Quit();
    23. function gettext(d){
    24.     var url='//open.iciba.com/dsapi/?date='+d;
    25.     var text='';
    26.     http.open('Get', url, false)
    27.     http.send();
    28.     text=http.responseText;
    29.     return text;
    30. }
    31. function getinfo(s){
    32.     var json=eval('('+s+')');
    33.     var content=json['content'];
    34.     var note=json['note'];
    35.     var translation=json['translation'];
    36.     var dateline=json['dateline'];
    37.     return content+'\r\n'+note+'\r\n'+translation;
    38. }
    复制代码
    1

    评分人数

      • kaze: 解决问题了技术 + 1
    提供代写,省时省力省事,支付宝扫码头像支付,QQ956535081

    TOP

    本帖最后由 kaze 于 2019-3-10 18:47 编辑

    回复 2# zaqmlp


        谢谢,:victory: :) 很完美,关键一句话  var json=eval('('+s+')');    虽然不太懂,但是套用一下拉网站数据足够了,for循环怎么倒序呢?
    搜了一下,for(var i=Number(n);i>=0;i--)完美解决,

    TOP

    vbs
    1. rem On Error Resume Next
    2. Dim http, html, strOut, i, dt, ymd, url
    3. Set http = CreateObject("Msxml2.XMLHTTP")
    4. Set html = CreateObject("htmlfile")
    5. strOut = ""
    6. For i = 0 To 9
    7.     dt  = DateAdd("d", -i, date)
    8.     ymd = Year(dt) & "-" & Right(Month(dt) + 100, 2) & "-" & Right(Day(dt) + 100, 2)
    9.     url = "//open.iciba.com/dsapi/?date=" & ymd
    10.     http.open "GET", url, False
    11.     http.send
    12.     strOut = GetJSON(http.responseText) & vbCrLf & vbCrLf & strOut
    13. Next
    14. Function GetJSON(txt)
    15.     Dim window, json
    16.     Set window = html.parentWindow
    17.     window.execScript "var json = " & txt, "JScript"
    18.     Set json = window.json
    19.     GetJSON = json.content & vbCrLf & json.note & vbCrLf
    20.     GetJSON = GetJSON & json.translation & vbCrLf & json.dateline
    21. End Function
    22. Dim fso
    23. Set fso = CreateObject("Scripting.FileSystemObject")
    24. fso.CreateTextFile("ciba.Log", 2, True).Write(strOut)
    25. MsgBox "Done"
    复制代码
    PowerShell v3.0
    1. -9..0 | ForEach{$url = '//open.iciba.com/dsapi/?date=' + (get-Date).AddDays($_).ToString('yyyy-MM-dd'); (Invoke-WebRequest $url).Content | ConvertFrom-Json | ForEach{$_.content; $_.note; $_.translation; $_.dateline}}
    复制代码
    1

    评分人数

    TOP

    回复 4# WHY


        牛啊,POWERSHELL就一句话,还是JAVASCRIPT好懂

    TOP

    返回列表
  • 【中国梦·大国工匠篇】鸡蛋上钻孔显真功 潜心坚守一线练就绝活儿 2019-06-11
  • 【理上网来·喜迎十九大】塞尔维亚驻华大使:中国的发展是其他国家望尘莫及的 2019-06-10
  • 六大工程培育发展新动能 2019-06-10
  • 为推动上合组织发展提供中国智慧、中国方案 2019-05-29
  • 覆盖31亿人口!一图告诉你上合组织有多牛 2019-05-28
  • 德味手表了解一下 徕卡推出L1,L2机械表德味手表徕卡推出L1-手机行情 2019-05-28
  • 西部网(陕西新闻网)www.cnwest.com 2019-05-27
  • 穿越千年 感悟周公 2019-05-27
  • 2017年度一级建造师考试成绩已发布 2019-05-27
  • 【大考2018】2018高考首日众生相(组图) 2019-05-27
  • 浙江舟山定海区一国企非党管理人员涉嫌受贿被查 2019-05-23
  • 让山里娃感受智慧科技乐趣 2019-05-19
  • 香港田径锦标赛飞人夺冠 2019-05-19
  • 诽谤侮辱英烈可追刑责 2019-05-14
  • 图解:十二字“洞见”2017年保险业 2019-04-28