批处理之家's Archiver

youxi01 发表于 2008-1-6 08:30

批处理获取本机IP(局域网)及MAC地址

无聊之作...[code]::==================批处理获取本机IP(局域网)及MAC地址==============
::code by youxi01@bbs.bathome.net 2008-1-5
@echo off
setlocal enabledelayedexpansion
title 获取本机IP(局域网)及MAC地址@bbs.bathome.net
Rem '/*=========初始化设置=============*/
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
   )
)
Rem '/*===========对结果进行处理===========
set PH_addr=%PH_addr:*:=%
set IP_addr=%IP_addr:*:=%
Rem '/*===========结果输出===============
echo.
echo 你的网卡物理地址为:%PH_addr%
echo.
echo 你的IP(局域网)地址为:%IP_addr%
pause>nul[/code]

家园 发表于 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

[quote]原帖由 [i]sbkthhlichuan[/i] 于 2009-8-10 12:17 发表 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=35529&ptid=488][img]http://www.bathome.net/images/common/back.gif[/img][/url]
请问  要是想获取局域网内的所有IP和MAC地址呢  又该怎么写呢? [/quote]

有问题可以单独发帖。
但我建议你还是先在本论坛搜索。

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:*:=%
是变量替换,可以参看这个帖子:
[url]http://bbs.bathome.net/viewthread.php?tid=2462&highlight=%CC%E6%BB%BB[/url]

set "Space=        "
set "[color=red]PH_addr=%Space%Physical Address[/color]"  %'/*-----物理地址-------*/%
set "IP_addr=%Space%IP Address" %'/*------IP地址(局域网)--------*/%
Rem ===========主程序===================
for /f "tokens=1,* delims=." %%i in ('ipconfig /all') do (
   for %%a in ([color=red]PH_addr[/color] IP_addr) do (
      if [color=blue]"%%i"=="!%%a!"[/color] 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

[quote]在windows 7中  没看出什么来。
[size=2][color=#999999]tuoout 发表于 2009-9-18 09:56[/color] [url=http://www.bathome.net/redirect.php?goto=findpost&pid=37593&ptid=488][img]http://www.bathome.net/images/common/back.gif[/img][/url][/size][/quote]


    不同版本的系统中,'ipconfig /all'显示的内容是不一样的,所以要作出相应的字符串变化。

verbs 发表于 2019-12-9 15:50

分享一下,获取本机 IP 的方法[code]for /f "usebackq tokens=4" %f in (`route print^|findstr 0.0.0.0.*0.0.0.0`)do @if "%f" neq "默认" echo %f[/code]PS: 也是参考 论坛大神的方法

ai20110304 发表于 2019-12-22 11:41

[b]回复 [url=http://www.bathome.net/redirect.php?goto=findpost&pid=225511&ptid=488]20#[/url] [i]verbs[/i] [/b]


    通过 路由表 默认路由取出的。如果 多网卡,将又有不一样

大道至简 发表于 2020-8-8 10:19

请问,在WIN7系统下,怎么没显示出具体IP和MAC的信息呢?

Zhou. 发表于 2020-8-18 17:16

在windows 10中  没看出什么来。

Batcher 发表于 2020-8-18 18:55

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=231716&ptid=488]23#[/url] [i]Zhou.[/i] [/b]


    第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

[b]回复 [url=http://bbs.bathome.net/redirect.php?goto=findpost&pid=237583&ptid=488]29#[/url] [i]huaker[/i] [/b]


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

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

页: [1]

Powered by Discuz! Archiver 7.2  © 2001-2009 Comsenz Inc.