Board logo

标题: [网络连接] [已解决]bat代码,curl命令,获取外网ip。部分电脑无法获取并显示,什么原因? [打印本页]

作者: ygqiang    时间: 2025-1-14 09:56     标题: [已解决]bat代码,curl命令,获取外网ip。部分电脑无法获取并显示,什么原因?

本帖最后由 ygqiang 于 2025-1-15 08:45 编辑

解决了,发现部分电脑,外网ip不是无法获取,是获取比较慢。
  1. @echo off
  2. @echo ════════════════════════════════════
  3. for /f "delims=: tokens=2" %%i in ('ipconfig^|findstr "IPv4 地址"') do echo      内网IP为:%%i
  4. for /f "delims=: tokens=2" %%m in ('ipconfig -all^|findstr "物理地址"') do echo      网卡地址:%%m
  5. @echo ════════════════════════════════════
  6. for /f "delims=: tokens=2" %%o in ('curl -s cip.cc^|findstr "IP"') do set ip=%%o&echo 外网IP为:%%o
  7. for /f "delims=: tokens=2" %%l in ('curl -s ipinfo.io^|findstr ""region""') do set ad=%%l&echo 所在地区:%%l
  8. @echo      外网IP为:%ip%       >nul 2>null
  9. @echo      所在地为:%ad%      >nul 2>null
  10. @echo ════════════════════════════════════
  11. del /q null >nul 2>nul
  12. ping 0 -n 10 >nul 2>nul
  13. del /q null >nul 2>nul
  14. exit
复制代码

作者: jiavip    时间: 2025-1-14 12:00

回复 1# ygqiang


    有的电脑可行有的却不行,无非是系统版本不同或命令程序缺失,导致命令无法执行,
查错的思路很简单,
1,先在电脑上执行一下那命令,curl -s cip.cc
2,打开cmd把批处理拖进CMD里运行,会看到基础的报错信息!
3,去掉批处理的@echo off 和 >nul ,在有可能出错的地方加上pause暂停观察

学会查错和分析,比什么都有用!
作者: ygqiang    时间: 2025-1-14 12:08

回复  ygqiang


    有的电脑可行有的却不行,无非是系统版本不同或命令程序缺失,导致命令无法执行, ...
jiavip 发表于 2025-1-14 12:00


已经确定,不同系统下面,都有这个命令。
作者: jiavip    时间: 2025-1-14 12:23

本帖最后由 jiavip 于 2025-1-14 12:26 编辑

回复 3# ygqiang


    涉及到网络和不同电脑的命令,得出不一样的运行效果,一是查看原始命令的执行效果,有的系统版本不同,相同的命令,回显的方式会有些出入,影响读取!
二是查看是否有变量冲突,和运行权限。
三是看网络状态,,,
作者: Batcher    时间: 2025-1-14 13:51

回复 1# ygqiang


找一台“不行”的电脑
双击文件 C:\Windows\System32\cmd.exe
在打开的CMD窗口中依次执行以下命令:
curl -s cip.cc > 1.txt
回车
把生成的1.txt文件上传到网盘
作者: ygqiang    时间: 2025-1-14 15:39

回复 5# Batcher


    命令提示符下,运行后生成的1.txt,无内容。

如果运行curl,则会提示:curl:try ’curl --help‘ for more information
作者: Batcher    时间: 2025-1-14 18:00

回复 6# ygqiang


    根据提示执行 curl --help 看看结果
作者: jiavip    时间: 2025-1-14 18:04

回复 6# ygqiang


    你那是命令没执行成功的提示!
----
那批处理的问题,,,
有一种错误是 DNS 解析不到那域名!
再有一种是批处理的空格出错 有的系统设置它支持 完整命令,有的是系统优化过了,不支持整条命令要用引号和空格区分
for /f "delims=: tokens=2" %%o in ('curl -s cip.cc^|findstr "IP"') do set ip=%%o&echo 外网IP为:%%o
改为,,,
  1. for /f "delims=: tokens=2" %%o in ('"curl -s cip.cc ^ | findstr "IP""') do set ip=%%o&echo 外网IP为:%%o
复制代码
试试,,
curl -s cip.cc ^ | findstr  "IP"
有的系统优化过了,不留空格在批处理里它就执行不了,,,
作者: 77七    时间: 2025-1-14 18:56

  1. @echo off
  2. chcp 65001 >nul
  3. curl "cip.cc" |find /i "ip"
  4. curl "ifconfig.me" |find /v ""
  5. pause
复制代码

作者: ygqiang    时间: 2025-1-14 20:23

本帖最后由 ygqiang 于 2025-1-14 21:48 编辑

回复 9# 77七
正常win10系统,运行代码以后,生成的1.txt与2.txt文件内容如下:
IP        : 115.161.156.220
URL        : http://www.cip.cc/115.161.156.220

2408:8215:f19:f561:50bb:5684:35b6:2853
  1.     @echo off
  2. chcp 65001 >nul
  3. curl "cip.cc" |find /i "ip" >1.txt
  4. curl "ifconfig.me" |find /v "" >2.txt
复制代码





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