前天吧!在
http://www.bathome.net/thread-70437-1-1.html
贴里看到有人求助!随便上去答了几个查错的经验只谈!
虽然后来帖主没回复是怎么解决的!但后来看到他挂上[以解决]也就没在意了。
今天无聊回去翻看了一下他的贴,觉得奇怪!
明明在 CURL CIP.CC 的命令已经有地址了!
为什么那脚本还要写上一句- for /f "delims=: tokens=2" %%l in ('curl -s ipinfo.io^|findstr ""region""') do set ad=%%l&echo 所在地区:%%l
复制代码 来获取地址!而且获取的还是拼音,也没有标示“运营商”!
后来我就试着把那获取IP命令改成获取地址和运营商!
发现那 CURL CIP.CC 回显的是 UTF-8 编码,!
如果批处理是 ANSI 编码则无法 | FIND "地址"
如果把批处理保存为 UTF-8 则不能兼顾上下其他命令或显示!
于是乎 我想到了编码转换!常规办法是~~~
把回显输出到本文,得到的是 UTF-8 编码的本文!
再把本文转码成 ANSI 本文!
再进行读取 ,获得中文地址和中文运营商!
获取命令和转码的批处理已经写好了!但后来觉得转码有点繁琐!
试过几次改写和精简但依然还是面对转码问题!
后来我想到一个怪招,把读取到的所有内容扔到注册表里,再从注册表读取!那就实现了无过渡转码了!哈哈,,,,
脚本已经写好,,贴出来,大家一起参考,研究,讨论,。。。- @Echo off & Color 72 & MODE con: COLS=30 LINES=4 & Title 获取 外网IP ,归属,运营商!
- Chcp 65001>Nul
- For /f "delims=" %%i in ('curl -s cip.cc') do (call,Set cip=%%cip%%@%%i)
- Reg ADD HKLM\Software\jia\dizhi /v dizhi /t REG_SZ /d "%cip%" /f
- Chcp 936>Nul
- For /f "tokens=2,3,4 delims=@" %%i in ('"REG QUERY HKEY_LOCAL_MACHINE\SOFTWARE\jia\dizhi"') do (Set ip=%%i&Set 地址=%%j&Set 运营商=%%k )
- Rer DELETE HKLM\Software\jia /f
- Set ip=%ip: =%
- Set 地址=%地址: =%
- Set 运营商=%运营商: =%
- cls
- Echo.%ip%
- Echo.%地址%
- Echo.%运营商%
- Pause>Nul&Exit
复制代码
|