【发布时间】:2018-08-29 11:16:43
【问题描述】:
我有一个批处理脚本,它获取机器的 IP 地址,如果不存在,则检索 WIFI 适配器的 IP 地址。它适用于以太网适配器,但是当它找到 WIFI 适配器时,它适用于某些系统但在其他系统上失败,因为我发现不同系统上的 WIFI 适配器的名称不同。我对批处理脚本了解不多。 这是我试过的脚本。
@echo off
setlocal enabledelayedexpansion
::just a sample adapter here:
set "adapter=Ethernet adapter Ethernet"
set adapterfound=false
echo Network Connection Test
echo %new%
for /f "usebackq tokens=1-2 delims=:" %%f in (`ipconfig`) do (
set "item=%%f"
if /i "!item!"=="!adapter!" (
echo found
set adapterfound=true
) else if not "!item!"=="!item:IPv4 Address=!" if "!adapterfound!"=="true" (
set _IPaddr=%%g
echo Your IP Address is: %%g
goto :break
rem set adapterfound=false
rem echo not found
)
rem echo adapterfound
)
:break
if "!adapterfound!"=="false" (
:: sometimes I get another name like "adapter=Wireless LAN adapter Wi-Fi 2"
set "adapter=Wireless LAN adapter Wireless Network Connection"
set adapterfound=false
echo Network Connection Test
for /f "usebackq tokens=1-2 delims=:" %%f in (`ipconfig`) do (
set "item=%%f"
if /i "!item!"=="!adapter!" (
echo found
set adapterfound=true
) else if not "!item!"=="!item:IPv4 Address=!" if "!adapterfound!"=="true" (
set _IPaddr=%%g
echo Your IP Address of WIFI is: %%g
set adapterfound=false
)
)
)
for /f "tokens=* delims= " %%a in ("%_IPaddr%") do set _IPaddr=%%a
echo %_IPaddr%
【问题讨论】:
-
您正在强制适配器名称,当您在其他设备上分发脚本时,硬编码不是一个好主意。您可以编写脚本以获取已配置设备的列表,从那里开始工作。命令
wmic nic get NetConnectionID应该会有所帮助 -
感谢@GerhardBarnard 的快速回复。您能否详细说明在此脚本中如何以及在何处使用它?
-
从 cmd 运行这个。
for /f "tokens=1,2 delims=:" %a in ('ipconfig ^| findstr IPv4') do echo %b并告诉我返回了多少 IP。如果超过 1 个 IP,有些通常是 192 个地址,未使用,只有 1 个地址在您的 IP 范围内。假设以 `10.` 开头,我正确吗? -
我有一个场景,我想获取已启用网络的 IP 地址。我相信它们可以是空白的。
-
那么连接的网络IP范围总是以相同的整数开头?不管是wifi还是lan,都是10开头的,比如?
标签: batch-file