关于利用批处理获取外网地址 显示异常的求助
本帖最后由 Love0912 于 2024-11-15 08:41 编辑先看代码
@echo off
setlocal
echo 正在获取 IP 地址...
for /f "delims=" %%i in ('curl -s https://myip.ipip.net/') do (
echo %%i | findstr /r "*\.*\.*\.*" >nul
set "IP=%%i"
goto :break
)
:break
echo 您的外网IP地址是: %IP%
pause
我想要达到的效果是,像下方图片中这样把信息全部显示出来,最次结果是只显示IP地址也可以(如果是只显示IP地址就屏蔽掉其它的所有信息 免得影响观看)
但是现在的问题是,可以成功获取到信息,但是有部分信息显示乱码,单独获取IP地址的代码可能是有BUG 一直不能成功落地。。大概就是下面这个样子的了
-------------------------------------------------------------
感谢各位大佬的帮助,这个问题得到了解决,下面是我修正后的代码,可以完美显示了,有类似问题的可以参考一下,下面评论区也有非常好的解决方案,可以自己翻
@echo off
setlocal enabledelayedexpansion
chcp 65001 >nul
cls
rem 获取IP地址
for /f "tokens=2 delims=: " %%i in ('curl -s https://myip.ipip.net/') do (
set "IP=%%i"
)
for /f "tokens=3,* delims=: " %%i in ('curl -s https://myip.ipip.net/') do (
set "gs=%%i %%j"
)
rem 输出IP地址
if defined IP (
echo 您的外网: !IP!
echo 您的归属地 !gs!
) else (
echo 无法获取外网IP地址
)
pause
把文件格式改成utf-8试试 CMD不支持UTF8编码 另存为,编码ANSI https://www.helloimg.com/i/2024/11/14/6735cbcd335a3.png renpeng009 发表于 2024-11-14 18:04
CMD不支持UTF8编码
执行chcp 65001即可切换为UTF8 命令中添加
二选一 试试看
::在 Windows 批处理中,如果路径中含有中文字符,可能会出现乱码的情况。
::报错解决:Windows批处理bat文件切换含有中文字符的路径无法识别中文字符(乱码)
::在批处理文件开头添加以下语句:
chcp 936
::这个命令可以将命令行窗口的字符编码设置为 GBK,从而支持中文字符。
::在 Windows 批处理中,如果路径中含有中文字符,可能会出现乱码的情况。
::报错解决:Windows批处理bat文件切换含有中文字符的路径无法识别中文字符(乱码)
::在批处理文件开头添加以下语句:
chcp 65001
::这个命令可以将命令行窗口的字符编码设置为 UTF-8,从而支持中文字符。
有时候,及个别情况下,这两种方式有用。 设置文件编码为ANSI,应该是网站的字符是utf-8,设置cmd的编码代码页
@echo off
chcp 65001
setlocal
echo Get IP...
for /f "delims=" %%i in ('curl -s https://myip.ipip.net/') do (
echo %%i | findstr /r "*\.*\.*\.*" >nul
set "IP=%%i"
goto :break
)
:break
echo your ip: %IP%
pause 本帖最后由 wonder2018 于 2024-11-14 18:30 编辑
看了一下你使用的网站,它返回的内容是utf8格式的。
需要在第二行添加“chcp 65001”
然后将bat保存为utf8格式再执行。(记事本右下角可以看到格式是utf-8,被水印挡住了一些www)
本帖最后由 298638651 于 2024-11-14 18:42 编辑
@echo off
setlocal
echo 正在获取 IP 地址...
for /f "delims=" %%i in ('powershell "(Invoke-WebRequest -UseBasicParsing -Uri https://api.ipify.org).Content"') do (
set "IP=%%i"
)
echo 正在查询 IP 归属地...
for /f "delims=" %%a in ('powershell "(Invoke-WebRequest -UseBasicParsing -Uri http://ip-api.com/json/%IP%?lang=zh-CN).Content | ConvertFrom-Json | Select -Property country, regionName, city, isp"') do (
echo %%a
)
echo 您的外网IP地址是: %IP%
pause
endlocal
换个思路试试..
https://www.helloimg.com/i/2024/11/14/6735d353c046c.png
页:
[1]
2