检索本地连接名称并批量更改

时间:2019-06-26 13:14:44

标签: batch-file

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

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

--dry_run

将网络名称更改为:

wmic.exe nic where "NetConnectionStatus=2" get NetConnectionID |more +1 

1 个答案:

答案 0 :(得分:3)

您正在寻找的是for /F loop,它能够捕获命令的输出:

import arcpy
import os
import random
import math

pa = 'protected_areas' # protected areas
sr = arcpy.Describe(pa).spatialReference # spatial ref
sa = 'study_area' # study area
x = [] # placeholder

with arcpy.da.SearchCursor(pa,'SHAPE@',spatial_reference=sr) as cursor: # for each polygon
    for row in cursor:
        centroid = row[0].centroid # calculate centroid
        poly = row[0]

for part in poly: # for each polygon part
    for pnt in part: # for each vertex
        x.append(pnt.X)

这里需要内部for /F "tokens=1* delims==" %%J in (' wmic NIC where "NetConnectionStatus=2" get NetConnectionID /VALUE ') do ( for /F "delims=" %%I in ("%%K") do ( netsh interface set interface name="%%I" newname="LAN" ) ) 循环,以避免外部{{1}将wmic的Unicode文本转换为ASCII / ANSI文本的伪像(如孤立的回车符) }(另请参阅我的this answer)。

我还通过Compo中用户comment建议的for /F选项,通过for /F选项更改了wmic的输出格式,这避免了可能出现尾随< kbd>空格。


请注意,/VALUE查询可能返回多个适配器,因此也许您想扩展wmic子句来避免这种情况,例如:

where

批处理文件中的for /F "tokens=1* delims==" %%J in (' wmic NIC where "NetConnectionStatus=2 and NetConnectionID like '%%Ethernet%%'" get NetConnectionID /VALUE ') do ( for /F "delims=" %%I in ("%%K") do ( netsh interface set interface name="%%I" newname="LAN" ) ) 代表一个文字%%,而%%子句中的通配符,因此上面的代码仅返回带有{{ 1}}的名称(不区分大小写)。


要确保where只能触摸一项,您可以在Ethernet循环中使用goto来打破它们:

netsh

参考:Win32_NetworkAdapter class