命令行以确定正在使用哪个以太网接口

时间:2012-11-28 00:05:16

标签: batch-file cmd netsh ipconfig

我编写了一个脚本,用于在部署计算机后配置它们。该脚本执行诸如设置计算机名称,启用BitLocker等操作。我正在努力解决的一件事是设置IP地址。我正在使用的计算机(特定服务器)有4个NIC端口,它们被命名为本地区域连接和本地区域连接2-4。问题是部署这些服务器的技术人员并不总是插入同一端口,另外部署映像并不总是将以太网网络本地连接分配给NIC端口1.

以下是我所拥有的脚本的副本,如果只启用了一个NIC端口,则该脚本可以正常工作。我需要做的是将具有IP地址的本地连接名称的输出(因为DHCP已存在)输入到我可以放入netsh命令的变量中。

现有代码

:IPADDRESS
@echo Would you like static or DHCP?
@echo press 1 for static
@echo press 2 for dhcp
Choice /C:12 /N /M "?:"
IF ERRORLEVEL 2 GOTO IPDHCP
IF ERRORLEVEL 1 GOTO IPSTATIC

:IPSTATIC
set /P _IPADDR=Please enter IP address:
set /p _Subnet=Please enter Subnet:
set /p _DefaultGateway=Please Enter Default Gateway:

netsh interface ip set address name="Local Area Connection 2" static %_IPADDR% %_Subnet% %_DefaultGateway%
goto START

:IPDHCP
  netsh interface ip set address "Local Area Connection 2" dhcp
 goto START

 :disipaddr
  netsh interface ip show config name="Local Area Connection 2"

名称“Local Area Connection 2”是从构建更改为构建的部分。这就是我需要隔离的部分。我相当确定for /p并将其用于ipconfig /all或netsh接口ip show config将是正确的方法。

提前感谢您提供所有帮助。

3 个答案:

答案 0 :(得分:1)

这将在Windows 7上运行和测试。

batch.bat文件:

@echo off

for /f "tokens=2 delims==" %%F in ('wmic nic where "NetConnectionStatus=2 and AdapterTypeId=0" get  NetConnectionID /format:list') do set interfaceName=%%F

echo Your Interface is %interfaceName%

pause

答案 1 :(得分:0)

也许你可以使用wmic吗?有点像:

for /f "tokens=2 delims==" %F in ('wmic nic where "NetConnectionStatus=2 and AdapterTypeId=0" get  NetConnectionID /format:list') do set %activeNet%=%F

它应该返回所有连接的(NetConnectionStatus=2)Eth / 802.3(AdapterTypeID=0)接口 - 即在您的实例中连接的接口。 (由于某种原因,它也在我的XP笔记本电脑上报告WiFi为802.3,但对于服务器来说这不应该是一个问题)

您可以直接从命令行尝试它,看它是否返回它应该的内容。如果批量使用,请将%F替换为%%F

请注意,可能需要检查已连接接口的返回值,因为它因各种操作系统而异。 Full description of the Win32_NetworkAdapter class(其中nic是别名)

如果您100%确定只想检查以“本地连接”开头的那些,则可以使用where "netconnectionID like 'Local Area Connection%'"代替(或将其与其他条件结合使用)

答案 2 :(得分:0)

您是说已连接,正在使用?

:_InterfaceConnected_
FOR /F "tokens=3,*" %%A IN ('netsh interface show interface^|find "Connected"') DO (
echo %%B
echo connected : %%B
)
@echo:

:_InterfaceDisconnected_
FOR /F "tokens=3,*" %%A IN ('netsh interface show interface^|find "Disconnected"') DO (
echo %%B
echo disconnected : %%B
)

给出输出:

Ethernet
connected : Ethernet

Ethernet 3
disconnected : Ethernet 3

通过命令的完整概述

> netsh interface show interface

输出:

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
Enabled        Disconnected   Dedicated        Ethernet 3
Enabled        Connected      Dedicated        Ethernet