Board logo

标题: [网络工具] 批处理获取本机IP(局域网)及MAC地址 [打印本页]

作者: youxi01    时间: 2008-1-6 08:30     标题: 批处理获取本机IP(局域网)及MAC地址

无聊之作...
  1. ::==================批处理获取本机IP(局域网)及MAC地址==============
  2. ::code by youxi01@bbs.bathome.net 2008-1-5
  3. @echo off
  4. setlocal enabledelayedexpansion
  5. title 获取本机IP(局域网)及MAC地址@bbs.bathome.net
  6. Rem '/*=========初始化设置=============*/
  7. set "Space=        "
  8. set "PH_addr=%Space%Physical Address"  %'/*-----物理地址-------*/%
  9. set "IP_addr=%Space%IP Address" %'/*------IP地址(局域网)--------*/%
  10. Rem ===========主程序===================
  11. for /f "tokens=1,* delims=." %%i in ('ipconfig /all') do (
  12.    for %%a in (PH_addr IP_addr) do (
  13.       if "%%i"=="!%%a!" set %%a=%%j
  14.    )
  15. )
  16. Rem '/*===========对结果进行处理===========
  17. set PH_addr=%PH_addr:*:=%
  18. set IP_addr=%IP_addr:*:=%
  19. Rem '/*===========结果输出===============
  20. echo.
  21. echo 你的网卡物理地址为:%PH_addr%
  22. echo.
  23. echo 你的IP(局域网)地址为:%IP_addr%
  24. pause>nul
复制代码

作者: 家园    时间: 2008-9-2 12:03     标题: 谢谢楼主!

有了这个,往后我维护网络就方便多了
作者: borat    时间: 2008-9-23 19:25

不错,不错,对我来说比较实用!!!
作者: testboy    时间: 2008-10-15 10:40

请问如何设置获取如 PPPoE链接的IP地址?
这个命令好像默认只能获取第一个网卡连接IP
作者: gs133790    时间: 2008-10-24 10:54

有点看不懂,到底上面的批处理在干什么。
作者: lxj    时间: 2008-10-31 17:02

能不能替换掉mac,不用手工?
作者: sun    时间: 2008-11-9 01:42

有些不明白?????
作者: shao2bing    时间: 2008-11-9 03:33     标题: 提问

楼主能不能解释下set PH_addr=%PH_addr:*:=%
set IP_addr=%IP_addr:*:=% 是什么意思
作者: mygoodboy    时间: 2008-11-9 08:15

楼主,可以再详细一点说明吗?我们是新手%_%
特别是for命令,一点都看不懂,呜呜~
作者: fiei    时间: 2009-1-3 15:32

若断开网线..那该如何写呢?
作者: sbkthhlichuan    时间: 2009-8-10 12:17

请问  要是想获取局域网内的所有IP和MAC地址呢  又该怎么写呢?
作者: keen    时间: 2009-8-10 12:52

原帖由 sbkthhlichuan 于 2009-8-10 12:17 发表
请问  要是想获取局域网内的所有IP和MAC地址呢  又该怎么写呢?


有问题可以单独发帖。
但我建议你还是先在本论坛搜索。
作者: leon52177    时间: 2009-8-27 10:52

楼主能不能解释下set PH_addr=%PH_addr:*:=%
set IP_addr=%IP_addr:*:=% 是什么意思
使用ipconfig/all命令就全都打印出来了,不管你有几块网卡
作者: keen    时间: 2009-8-27 11:42     标题: 回复 13楼 的帖子

set IP_addr=%IP_addr:*:=%
是变量替换,可以参看这个帖子:
http://bbs.bathome.net/viewthrea ... hlight=%CC%E6%BB%BB

set "Space=        "
set "PH_addr=%Space%Physical Address"  %'/*-----物理地址-------*/%
set "IP_addr=%Space%IP Address" %'/*------IP地址(局域网)--------*/%
Rem ===========主程序===================
for /f "tokens=1,* delims=." %%i in ('ipconfig /all') do (
   for %%a in (PH_addr IP_addr) do (
      if "%%i"=="!%%a!" set %%a=%%j
   )
)

红色部分,就是MAC(物理地址)
蓝色部分,就是判断条件,就是从ipconfig/all中,挑选出物理地址和IP地址。
作者: tuoout    时间: 2009-9-18 09:56

在windows 7中  没看出什么来。
作者: hantmite    时间: 2010-4-16 19:35

对于网络维护人员来说  可能这个更实用一些,代码简单,原理简单
@echo off
ipconfig/all >1.txt
type 1.txt
pause
del 1.txt
exit
作者: neorobin    时间: 2010-4-16 23:20     标题: 回复 16楼 的帖子

用了 type 就没必要重定向输出到文件了, 直接 ipconfig /all 就可以看结果了.
要输出到文件, 最好就在后面用 start 1.txt 用系统关联的图形界面文本编辑器来查看结果更方便
作者: crystalysoft    时间: 2010-4-23 14:02

是啊,标题党最浪费人时间去看帖子了,谢谢这个批处理大集体,我是来严肃学习的。
作者: zzpsongs    时间: 2012-3-23 17:39

在windows 7中  没看出什么来。
tuoout 发表于 2009-9-18 09:56



    不同版本的系统中,'ipconfig /all'显示的内容是不一样的,所以要作出相应的字符串变化。
作者: verbs    时间: 2019-12-9 15:50

分享一下,获取本机 IP 的方法
  1. for /f "usebackq tokens=4" %f in (`route print^|findstr 0.0.0.0.*0.0.0.0`)do @if "%f" neq "默认" echo %f
复制代码
PS: 也是参考 论坛大神的方法
作者: ai20110304    时间: 2019-12-22 11:41

回复 20# verbs


    通过 路由表 默认路由取出的。如果 多网卡,将又有不一样
作者: 大道至简    时间: 2020-8-8 10:19

请问,在WIN7系统下,怎么没显示出具体IP和MAC的信息呢?
作者: Zhou.    时间: 2020-8-18 17:16

在windows 10中  没看出什么来。
作者: Batcher    时间: 2020-8-18 18:55

回复 23# Zhou.


    第11行 ipconfig /all 这个命令在不同的系统里面得到的结果格式可能不同,根据实际情况调整一下代码即可。
作者: ddvc    时间: 2020-9-8 07:50

支持楼主,谢谢分享。
作者: Markting    时间: 2020-9-12 12:59

支持楼主,谢谢分享。
作者: riche0604    时间: 2020-12-2 00:32

好像没起作用
作者: 459500160    时间: 2021-1-25 16:16

我也来一个,看20年还有人回复,加上了外网的查询跟归属地,看看有没有大神再帮小弟精简下
@echo off
title 内外网IP查看工具-By NT
@echo.
mode con cols=38 lines=15
color F0
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
set "DEL=%%a")

@echo            请将以下内容截图或
@echo            本工具生成在桌面的
call :ColorText Fc "            IP信息"
@echo 发送给网管
@echo ════════════════════════════════════
for /f "delims=: tokens=2" %%i in ('ipconfig^|findstr "IPv4 地址"') do echo      内网IP为:%%i        &echo 内网IP为:%%i >>IP信息.txt
for /f "delims=: tokens=2" %%m in ('ipconfig -all^|findstr "物理地址"') do echo      网卡地址:%%m    &echo 网卡地址:%%m >>IP信息.txt
for /f "delims=: tokens=2" %%o in ('curl -s cip.cc^|findstr "IP"') do set ip=%%o&echo 外网IP为:%%o >>IP信息.txt
for /f "delims=: tokens=2" %%l in ('curl -s ipinfo.io^|findstr ""region""') do set ad=%%l&echo 所在地区:%%l >>IP信息.txt
@echo      外网IP为:%ip%      
@echo      所在地为:%ad%      
@echo ════════════════════════════════════
set /p="   按任意键退出并删除"<nul
call :ColorText Fc "IP信息"
@echo 文档
pause>nul
for /r %%f in (IP信息.txt) do del %%f
goto :eof
:ColorText
echo off
<nul set /p ".=%DEL%" > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof
作者: huaker    时间: 2021-4-16 09:26

win7下直接闪退了
作者: Batcher    时间: 2021-4-16 10:33

回复 29# huaker


希望你在这个论坛学到的第一个技巧是:不要只说闪退 ^_^

请参考Q-01观察一下哪行代码在报错:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ




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