找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 25326|回复: 4

[网络连接] [已解决]断网状态下批处理如何获取ip地址

[复制链接]
发表于 2021-3-16 22:15:23 | 显示全部楼层 |阅读模式
正常情况下可以通过ipconfig /all或route print获取IP地址,MAC地址。但现在有个需求需要在不插网线不联网的情况下获取机器的IP地址(机器的IP地址是固定的)。
这个是可以实现的吗?谢谢大佬们!
发表于 2021-3-17 08:28:57 | 显示全部楼层
IP:netsh
MAC:getmac
 楼主| 发表于 2021-3-17 10:39:42 | 显示全部楼层
回复 2# cutebe


   非常感谢您的指导。测试可用!谢谢!
发表于 2022-3-25 14:56:18 | 显示全部楼层
1. netsh 命令
  1. netsh interface ip dump | findstr "address="
复制代码
2. 注册表
  1. @echo off
  2. for /f "tokens=3" %%i in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards" /s ^| findstr "ServiceName"') do (
  3.     for /f "tokens=3" %%j in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v IPAddress 2^>nul ^| findstr "IPAddress"') do (
  4.         echo,%%j
  5.     )
  6. )
  7. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
Echo11 + 1 注册表方法最兼容,断网或DHCP的情况都查得 ...

查看全部评分

发表于 2022-3-28 16:06:48 | 显示全部楼层
本帖最后由 Echo11 于 2022-3-28 16:08 编辑

回复 4# Batcher


    大佬你好,细究发现,注册表方法简单这样写在某些情况下是不准确的,比如你先动态获取了IP,然后改又设置了静态IP,虽然网络适配器状态中只显示当前使用的,但是注册表里不会马上把原来动态获取的IP等信息清空。动态IP和静态IP等信息,在这个注册表项下,是用不同的键名来存储的。这样会获得两个IP地址。

下面是我修改的显示完整信息的代码(未精简)
  1. @ECHO OFF
  2. for /f "tokens=3" %%i in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards" /s ^| findstr "ServiceName"') do (
  3.         ECHO.------------------------------
  4.         for /f "tokens=3" %%j in ('reg query "HKLM\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\%%i\Connection" /s /v "Name" ^| findstr /I "Name"') do ECHO.网络链接名称:[%%j]
  5.         for /f "tokens=3" %%k in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" /v "EnableDHCP" ^| findstr /I "EnableDHCP"') do (
  6.                 REM 使用DHCP,DNS可以是DHCP获取,可以是静态指定
  7.                 IF %%k==0x1 (
  8.                         ECHO.DHCP:启用
  9.                         for /f "tokens=3" %%l in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" ^| findstr /I /C:" DhcpIPAddress "') do ECHO.IPAddress:[%%l]
  10.                         for /f "tokens=3" %%l in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" ^| findstr /I /C:" DhcpSubnetMask "') do ECHO.SubnetMask:[%%l]
  11.                         for /f "tokens=3" %%l in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" ^| findstr /I /C:" DhcpDefaultGateway "') do ECHO.DefaultGateway:[%%l]
  12.                         for /f "tokens=2,*" %%m in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" ^| findstr /I /C:" NameServer "') do IF not "%%n"=="" (
  13.                                 ECHO.Static DNS:[%%n]
  14.                         ) else (
  15.                                 for /f "tokens=2,*" %%o in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" ^| findstr /I /C:" DhcpNameServer "') do ECHO.DHCP DNS:[%%p]
  16.                         )
  17.                 )
  18.                 REM 不使用DHCP,DNS必须也是静态指定
  19.                 IF %%k==0x0 (
  20.                         ECHO.DHCP:未启用
  21.                         for /f "tokens=3" %%l in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" ^| findstr /I /C:" IPAddress "') do ECHO.IPAddress:[%%l]
  22.                         for /f "tokens=3" %%l in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" ^| findstr /I /C:" SubnetMask "') do ECHO.SubnetMask:[%%l]
  23.                         for /f "tokens=3" %%l in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" ^| findstr /I /C:" DefaultGateway "') do ECHO.DefaultGateway:[%%l]
  24.                         for /f "tokens=2,*" %%m in ('reg query "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\%%i" ^| findstr /I /C:" NameServer "') do ECHO.Static DNS:[%%n]
  25.                 )
  26.         )
  27. )
  28. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 05:54 , Processed in 0.018662 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表