Batch file 检索本地区域连接名称并使用批处理更改它
我知道如何检索活动连接并更改局域网连接名称,但我想知道如何在一个脚本中执行这些操作,即检索活动局域网连接名称并将其更改为LAN 要检索当前活动连接,请执行以下操作:Batch file 检索本地区域连接名称并使用批处理更改它,batch-file,Batch File,我知道如何检索活动连接并更改局域网连接名称,但我想知道如何在一个脚本中执行这些操作,即检索活动局域网连接名称并将其更改为LAN 要检索当前活动连接,请执行以下操作: wmic.exe nic where "NetConnectionStatus=2" get NetConnectionID |more +1 将网络名称更改为: NetSh interface set interface name="Ethernet" newname="LAN" 您要查找的是,它能够捕获命令的输出: for
wmic.exe nic where "NetConnectionStatus=2" get NetConnectionID |more +1
将网络名称更改为:
NetSh interface set interface name="Ethernet" newname="LAN"
您要查找的是,它能够捕获命令的输出:
for/F“tokens=1*delims==”%%J in('
wmic NIC,其中“NetConnectionStatus=2”获取NetConnectionID/值
""做"(
对于/F“delims=“%%I in(“%%K”)do(
netsh interface set interface name=“%%I”newname=“LAN”
)
)
这里需要使用内部for/F
循环,以避免外部for/F
将Unicode文本转换为ASCII/ANSI文本时出现伪影(如孤立的回车字符)(另请参见我的)
我还按照用户在a中的建议,通过/VALUE
选项更改了wmic
的输出格式,从而避免了潜在尾随空格的问题
请注意,
wmic
查询可能返回多个适配器,因此可能需要扩展where
子句以避免这种情况,例如:
for/F“tokens=1*delims==”%%J in('
wmic NIC,其中“NetConnectionStatus=2且NetConnectionID类似于%%Ethernet%%”获取NetConnectionID/值
""做"(
对于/F“delims=“%%I in(“%%K”)do(
netsh interface set interface name=“%%I”newname=“LAN”
)
)
批处理文件中的%%
表示一个文本%%
,而%%
是where
子句中的通配符,因此上述代码仅返回名称中带有以太网的项(不区分大小写)
为了保证netsh
只触及一个项目,您只需在for/F
循环中使用以下命令即可将其打断:
for/F“tokens=1*delims==”%%J in('
wmic NIC,其中“NetConnectionStatus=2”获取NetConnectionID/值
""做"(
对于/F“delims=“%%I in(“%%K”)do(
netsh interface set interface name=“%%I”newname=“LAN”
后藤:下一个
)
)
:下一个
参考:请注意,使用WMIC的默认表格格式可能会在返回字符串的末尾附加一个或多个空格。这意味着您将有效地通过name=“Local Area Connection”
,这可能会导致失败。因此,我建议@For/F“Tokens=1*Delims==”%%A In('WMIC NIC Where“NetConnectionStatus='2'”Get NetConnectionID/Format:List 2^>NUL')Do@For/F“Tokens=*”%%C In(“%%B”)Do@NetSH Interface Set Interface name=“%%C…”
。您还可以将/Format:List
替换为/Value
。谢谢,@Compo,您完全正确,我完全忘记了尾随空格;请看我编辑的答案。。。