[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 用wmic设置网卡ip遇到的问题

使用下面的命令要设置网卡的index, 这个有麻烦, 我电脑上有个板载wifi, 插件USB的无线网卡, 还使用过USB的有线网卡, 还有内置网卡, 如果我只想设置当前正在上网使用的网卡的IP, 代码应该怎样改呢?

wmic nicconfig where(index='8') call enablestatic "192.168.1.81","255.255.255.0"

  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# 小白龙

TOP

回复 14# 986981535


    就是在bat下用wmic命令, 用powershell启动太慢了

TOP

回复 13# 小白龙


    太执着了,我使用的时候。bat不行试试power shell,再不行wmic也行。

TOP

回复 10# Batcher

大佬, 怎样判断是无线还是有线网卡呢, 没有找到相关的属性
虚拟机的网卡应该用 Physicaladapter=True 就能区分开吧

TOP

本帖最后由 小白龙 于 2023-9-1 10:54 编辑

回复 11# Batcher


    NetEnabled=True  这个条件, 就是当前使用的网卡, 我一般不同时使用无线和有线, 所以, 只会返回一个项

另外, 上面的命令, 是设置IP的, 能连环Call吗?我说的连环是说在一行里面call,  因为我还想设置网关
wmic nicconfig where (Index=8) call setgateways "192.168.1.1"

TOP

回复 9# 小白龙


    10楼提到的几种情况也会有多个 NetEnabled=True 你可能还得区分到底选哪个
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 5# 986981535


这个不一定,例如:
有线网卡连内网,无线网卡连外网;
有线网卡连外网,无线网卡连内网;
两个有线网卡,分别连内外网;
两个无线网卡,分别连内外网;
安装了VirtualBox或VMware等虚拟机软件;
......

都会有多个IPv4同时存在
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 小白龙 于 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地址什么的

TOP

回复 7# 986981535

我是想使用wmic命令实现, 现在问题 主要是筛选满足条件的网卡 ,用where筛选

TOP

回复 6# 小白龙


    你只想一句命令实现?不然无非就是netsh命令改wmic,判断哪个网卡使用还是有必要的吧。

TOP

回复 5# 986981535


    感谢帮助, 我想使用wmic命令来实现

TOP

  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
复制代码
1

评分人数

TOP

回复 3# czjt1234


   是这样吗? 执行后显示无效的查询

wmic nicconfig where "Physicaladapter = True AND NetEnabled = True"

TOP

WHERE Physicaladapter = True AND NetEnabled = True
一个是物理网卡
一个是网卡已连接

如果还不能区分网卡,看看不能上网的网卡是否没有网关
ipconfig/all
读取网关和网卡信息,根据网卡信息再用wmic查询

QQ 20147578

TOP

返回列表