Board logo

标题: [系统相关] 用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

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. REM 获取当前正在使用的网络适配器的名称,只有连接的会显示IPv4
  4. for /f "tokens=2 delims=: " %%a in ('ipconfig ^| find "IPv4"') do (
  5.     set "adapterName=%%a"
  6. )
  7. REM 配置网络适配器的 IP 地址、子网掩码和默认网关
  8. set "ipAddress=192.168.1.100"
  9. set "subnetMask=255.255.255.0"
  10. set "defaultGateway=192.168.1.1"
  11. echo 当前正在使用的网络适配器: %adapterName%
  12. echo 正在配置 IP 地址...
  13. netsh interface ip set address name="%adapterName%" static %ipAddress% %subnetMask% %defaultGateway% 1
  14. echo IP 地址配置完成.
  15. 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

  1. @echo off  
  2. setlocal enabledelayedexpansion  
  3.   
  4. REM 获取当前正在使用的网络适配器的名称  
  5. for /f "tokens=2 delims=: " %%a in ('ipconfig ^| find "IPv4"') do (  
  6.     set "adapterName=%%a"  
  7. )  
  8.   
  9. REM 配置网络适配器的 IP 地址、子网掩码和默认网关  
  10. set "ipAddress=192.168.1.100"  
  11. set "subnetMask=255.255.255.0"  
  12. set "defaultGateway=192.168.1.1"  
  13.   
  14. echo 当前正在使用的网络适配器: %adapterName%  
  15. echo 正在配置 IP 地址...  
  16.   
  17. wmic adapter where name="%adapterName%" call SetIP "%ipAddress%,%subnetMask%,%defaultGateway%,1"  
  18.   
  19. echo IP 地址配置完成.  
  20.   
  21. endlocal
复制代码
回复 15# 小白龙




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2