标题: [系统相关] 用wmic设置网卡ip遇到的问题 [打印本页]
作者: 小白龙 时间: 2023-8-31 21:16 标题: 用wmic设置网卡ip遇到的问题
使用下面的命令要设置网卡的index, 这个有麻烦, 我电脑上有个板载wifi, 插件USB的无线网卡, 还使用过USB的有线网卡, 还有内置网卡, 如果我只想设置当前正在上网使用的网卡的IP, 代码应该怎样改呢?
wmic nicconfig where(index='8') call enablestatic "192.168.1.81","255.255.255.0"
作者: Five66 时间: 2023-9-1 01:05
本帖最后由 Five66 于 2023-9-1 01:15 编辑
额,这种貌似查不到吧
作者: czjt1234 时间: 2023-9-1 07:00
WHERE Physicaladapter = True AND NetEnabled = True
一个是物理网卡
一个是网卡已连接
如果还不能区分网卡,看看不能上网的网卡是否没有网关
ipconfig/all
读取网关和网卡信息,根据网卡信息再用wmic查询
作者: 小白龙 时间: 2023-9-1 07:34
回复 3# czjt1234
是这样吗? 执行后显示无效的查询
wmic nicconfig where "Physicaladapter = True AND NetEnabled = True"
作者: 986981535 时间: 2023-9-1 08:50
- @echo off
-
- setlocal enabledelayedexpansion
-
- REM 获取当前正在使用的网络适配器的名称,只有连接的会显示IPv4
- for /f "tokens=2 delims=: " %%a in ('ipconfig ^| find "IPv4"') do (
- set "adapterName=%%a"
- )
-
- REM 配置网络适配器的 IP 地址、子网掩码和默认网关
- set "ipAddress=192.168.1.100"
- set "subnetMask=255.255.255.0"
- set "defaultGateway=192.168.1.1"
-
- echo 当前正在使用的网络适配器: %adapterName%
- echo 正在配置 IP 地址...
-
- netsh interface ip set address name="%adapterName%" static %ipAddress% %subnetMask% %defaultGateway% 1
-
- echo IP 地址配置完成.
-
- endlocal
复制代码
作者: 小白龙 时间: 2023-9-1 08:58
回复 5# 986981535
感谢帮助, 我想使用wmic命令来实现
作者: 986981535 时间: 2023-9-1 09:19
回复 6# 小白龙
你只想一句命令实现?不然无非就是netsh命令改wmic,判断哪个网卡使用还是有必要的吧。
作者: 小白龙 时间: 2023-9-1 09:31
回复 7# 986981535
我是想使用wmic命令实现, 现在问题 主要是筛选满足条件的网卡 ,用where筛选
作者: 小白龙 时间: 2023-9-1 10:31
本帖最后由 小白龙 于 2023-9-1 10:42 编辑
回复 3# czjt1234
wmic nic where "NetEnabled=True" get index /value
我用上面的命令获取到了 index, 然后把这个传给下面的, 应该就可以了, 但是怎样一行代码实现呢?
wmic nicconfig where(index='8') call enablestatic "192.168.1.81","255.255.255.0"
总感觉nic这个类里应该直接就能设置ip地址什么的
作者: Batcher 时间: 2023-9-1 10:47
回复 5# 986981535
这个不一定,例如:
有线网卡连内网,无线网卡连外网;
有线网卡连外网,无线网卡连内网;
两个有线网卡,分别连内外网;
两个无线网卡,分别连内外网;
安装了VirtualBox或VMware等虚拟机软件;
......
都会有多个IPv4同时存在
作者: Batcher 时间: 2023-9-1 10:48
回复 9# 小白龙
10楼提到的几种情况也会有多个 NetEnabled=True 你可能还得区分到底选哪个
作者: 小白龙 时间: 2023-9-1 10:52
本帖最后由 小白龙 于 2023-9-1 10:54 编辑
回复 11# Batcher
NetEnabled=True 这个条件, 就是当前使用的网卡, 我一般不同时使用无线和有线, 所以, 只会返回一个项
另外, 上面的命令, 是设置IP的, 能连环Call吗?我说的连环是说在一行里面call, 因为我还想设置网关
wmic nicconfig where (Index=8) call setgateways "192.168.1.1"
作者: 小白龙 时间: 2023-9-1 11:20
回复 10# Batcher
大佬, 怎样判断是无线还是有线网卡呢, 没有找到相关的属性
虚拟机的网卡应该用 Physicaladapter=True 就能区分开吧
作者: 986981535 时间: 2023-9-1 16:25
回复 13# 小白龙
太执着了,我使用的时候。bat不行试试power shell,再不行wmic也行。
作者: 小白龙 时间: 2023-9-1 16:43
回复 14# 986981535
就是在bat下用wmic命令, 用powershell启动太慢了
作者: 986981535 时间: 2023-9-4 16:01
- @echo off
- setlocal enabledelayedexpansion
-
- REM 获取当前正在使用的网络适配器的名称
- for /f "tokens=2 delims=: " %%a in ('ipconfig ^| find "IPv4"') do (
- set "adapterName=%%a"
- )
-
- REM 配置网络适配器的 IP 地址、子网掩码和默认网关
- set "ipAddress=192.168.1.100"
- set "subnetMask=255.255.255.0"
- set "defaultGateway=192.168.1.1"
-
- echo 当前正在使用的网络适配器: %adapterName%
- echo 正在配置 IP 地址...
-
- wmic adapter where name="%adapterName%" call SetIP "%ipAddress%,%subnetMask%,%defaultGateway%,1"
-
- echo IP 地址配置完成.
-
- endlocal
复制代码
回复 15# 小白龙
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |