Board logo

标题: [文本处理] 批处理怎样解析uef8文件中的ip地址? [打印本页]

作者: freesoft00    时间: 2021-3-29 15:14     标题: 批处理怎样解析uef8文件中的ip地址?

  1. {"connections":[{"ID":2469999,"name":"123的网络","type":0,"owner_mbr_id":1049243,"members":[{"sn":"38542300:001","ID":1049020,"name":"ON11","type":"0","ip":"172.16.1.189","lan_ip":"","lan_mask":"","mac":"00-25-BC-01-22-11","dev_type":"1","is_online":1,"is_owner":0,"nat_type":4,"delay":17,"connect_type":"p2p","p2p_recv_speed":0,"p2p_send_speed":0,"p2p_recv":56132,"p2p_send":87450,"trans_recv_speed":42,"trans_send_speed":0,"trans_recv":84,"trans_send":0},{"sn":"38542300:002","ID":1049243,"name":"JD11","type":"0","ip":"172.16.2.156","lan_ip":"","lan_mask":"","mac":"00-25-9B-02-22-11","dev_type":"1","is_online":1,"is_owner":1,"nat_type":4,"delay":4294967295,"connect_type":"tcp forward","p2p_recv_speed":0,"p2p_send_speed":0,"p2p_recv":0,"p2p_send":0,"trans_recv_speed":0,"trans_send_speed":0,"trans_recv":0,"trans_send":0}]}
  2. ]}
复制代码
test.txt文本内容,格式uef8,想解析出来ip地址,写入到注册表中,替换红色内容。使用第三方软件也可以。
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\test]
"ServerName"="192.168.100.254"

第一个ip地址172.16.1.189对应的sn":"38542300:001还有"name":"ON11"是固定的,ip地址不固定。所以想解析出来写入到注册表中。第二个ip地址172.16.2.156不用管
样例文件没有传上来,上传不成功,内容就是上面的,没有换行,一行内容

样本文件传到了百度
链接: https://pan.baidu.com/s/1ksKxFGosKXkITiRGcGGmjg 提取码: kwh2 复制这段内容后打开百度网盘手机App,操作更方便哦
作者: Batcher    时间: 2021-3-29 15:42

回复 1# freesoft00


    文件压缩之后也是无法上传吗?
作者: freesoft00    时间: 2021-3-29 16:30

回复 2# Batcher


不能,上传0个成功,1个失败。
文件很小,不压缩显示的才1.kb
作者: went    时间: 2021-3-29 20:57

  1. @echo off & cd /d "%~dp0"
  2. %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
  3. set "file=F:\Desktop\status"
  4. set "code=powershell -c "(Get-Content -Encoding UTF8 -Path '%file%' ^| ConvertFrom-Json).connections[0].members[0].ip""
  5. for /f "delims=" %%i in ('%code%') do (
  6. echo %%i
  7. reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\test" /v "ServerName" /t "REG_SZ" /d "%%i" /f
  8. )
  9. pause&exit
复制代码

作者: WHY    时间: 2021-3-29 22:01

test.bat,右键选择 "以管理员身份运行"
  1. @if(0)==(0) echo off
  2. REM 待处理的 json 文件名
  3. set "srcFile=test.txt"
  4. pushd "%~dp0"
  5. for /f "delims=" %%i in ('cscript //nologo //e:jscript "%~f0" "%srcFile%"') do (
  6.     reg add "HKLM\SOFTWARE\Wow6432Node\test" /v "ServerName" /d "%%i" /f
  7. )
  8. pause & exit
  9. @end
  10. var json = eval( '(' + getText( WSH.Arguments(0) ) + ')' );
  11. var p = json.connections[0].members;
  12. for(var i=0; i<p.length; i++){
  13.     //sn=38542300:001 且 name=ON11 则回显对应的IP
  14.     if( p[i].sn == '38542300:001' && p[i].name == 'ON11' ) WSH.Echo(p[i].ip);
  15. }
  16. function getText(file){
  17.     var ado = new ActiveXObject('Adodb.Stream');
  18.     ado.Mode = 3;
  19.     ado.Type = 2;
  20.     ado.Charset = 'utf-8';
  21.     ado.Open();
  22.     ado.LoadFromFile(file);
  23.     return ado.ReadText(-1);
  24. }
复制代码

作者: freesoft00    时间: 2021-3-30 09:04

回复 5# WHY


    成功
作者: freesoft00    时间: 2021-3-30 09:05

回复 4# went


    win7系统,可能是我系统环境的问题,提示ps什么什么错误。




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