Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 检索本地区域连接名称并使用批处理更改它_Batch File - Fatal编程技术网

Batch file 检索本地区域连接名称并使用批处理更改它

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

我知道如何检索活动连接并更改局域网连接名称,但我想知道如何在一个脚本中执行这些操作,即检索活动局域网连接名称并将其更改为LAN

要检索当前活动连接,请执行以下操作:

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,您完全正确,我完全忘记了尾随空格;请看我编辑的答案。。。