我知道如何检索活动的连接并更改局域网连接名称,但是我想知道如何在一个脚本中进行操作,即检索活动的局域网连接名称并将其更改为LAN。
要检索当前活动的连接,请执行以下操作:
--dry_run
将网络名称更改为:
wmic.exe nic where "NetConnectionStatus=2" get NetConnectionID |more +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