如何在Windows批处理中提取IP地址的4个八位组
别担心英文表述的问题,我来帮你搞定Windows批处理里提取IPv4纯地址的需求!你的核心目标是把设备信息按指定格式写入文件,关键就是从ipconfig的输出里剥离出仅包含四个八位组的IP地址,对吧?
先看你原来的脚本,ipconfig | find /i "IPv4"会输出类似 IPv4 Address. . . . . . . . . . . : 10.138.53.150这样的整行内容,我们需要用for /f命令来解析这行文本,提取出后面的纯IP。
下面是修改后的完整脚本,已经帮你整合了所有需求:
@echo off setlocal enabledelayedexpansion :: 初始化变量,防止找不到IP/MAC时显示空值 set "IP_ADDR=Not found" set "MAC_ADDR=Not found" :: 提取第一个IPv4地址(多网卡环境下取第一个,若要全部可去掉goto) for /f "tokens=2 delims=:" %%a in ('ipconfig ^| find /i "IPv4 Address"') do ( set "IP_ADDR=%%a" rem 移除IP地址前面的所有空格 set "IP_ADDR=!IP_ADDR: =!" goto :get_ip_done ) :get_ip_done :: 提取第一个MAC地址(根据实际MAC格式调整匹配规则,这里找带"-"的MAC行) for /f "tokens=1 delims= " %%b in ('getmac ^| find /i "-"') do ( set "MAC_ADDR=%%b" goto :get_mac_done ) :get_mac_done :: 控制台输出设备信息 echo =========================================== echo = EQUIPMENT CONFIGURATION = echo =========================================== echo. echo Today's date: %date% echo. echo Computer Name: %computername% echo. echo IP Address: %IP_ADDR% echo. echo MAC Address: %MAC_ADDR% echo. :: 按你需要的格式写入共享文件夹的文本文件 echo DATE: %date% HOUR : %time% COMPUTER NAME : %computername% IP : %IP_ADDR% MAC : %MAC_ADDR% >> \\10.138.50.215\test\txtinfo.txt echo. echo Press the "SPACE" key to close this window ... pause>nul endlocal
关键部分说明:
- 延迟变量扩展:开头的
setlocal enabledelayedexpansion是必须的,因为在for循环里修改变量后,需要用!变量名!的方式才能立即读取到更新后的值。 - IP提取逻辑:
for /f "tokens=2 delims=:"以冒号为分隔符,取ipconfig输出行的第二部分(也就是冒号后面的内容),再用set "IP_ADDR=!IP_ADDR: =!"去掉IP前面的多余空格,得到纯八位组格式的IP。 - MAC提取逻辑:用
getmac命令输出MAC列表,通过find /i "-"匹配标准MAC格式的行,同样用for /f提取出纯MAC地址。 - 避免多网卡干扰:用
goto跳转到循环外,确保只提取第一个找到的IP/MAC,如果你需要收集所有网卡的信息,可以去掉对应的goto语句。
这样修改后,写入文件的内容就会完全符合你想要的格式啦!
内容的提问来源于stack exchange,提问作者Blitzinger
相关产品推荐
相关产品推荐

