找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 53695|回复: 15

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

[复制链接]
发表于 2023-8-31 21:16:02 | 显示全部楼层 |阅读模式
使用下面的命令要设置网卡的index, 这个有麻烦, 我电脑上有个板载wifi, 插件USB的无线网卡, 还使用过USB的有线网卡, 还有内置网卡, 如果我只想设置当前正在上网使用的网卡的IP, 代码应该怎样改呢?

wmic nicconfig where(index='8') call enablestatic "192.168.1.81","255.255.255.0"
发表于 2023-9-1 01:05:14 | 显示全部楼层
本帖最后由 Five66 于 2023-9-1 01:15 编辑

额,这种貌似查不到吧
发表于 2023-9-1 07:00:11 | 显示全部楼层
WHERE Physicaladapter = True AND NetEnabled = True
一个是物理网卡
一个是网卡已连接

如果还不能区分网卡,看看不能上网的网卡是否没有网关
ipconfig/all
读取网关和网卡信息,根据网卡信息再用wmic查询
 楼主| 发表于 2023-9-1 07:34:57 | 显示全部楼层
回复 3# czjt1234


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

wmic nicconfig where "Physicaladapter = True AND NetEnabled = True"
发表于 2023-9-1 08:50:19 | 显示全部楼层
  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技术 +1 收起 理由
小白龙 + 1 乐于助人

查看全部评分

 楼主| 发表于 2023-9-1 08:58:58 | 显示全部楼层
回复 5# 986981535


    感谢帮助, 我想使用wmic命令来实现
发表于 2023-9-1 09:19:36 | 显示全部楼层
回复 6# 小白龙


    你只想一句命令实现?不然无非就是netsh命令改wmic,判断哪个网卡使用还是有必要的吧。
 楼主| 发表于 2023-9-1 09:31:25 | 显示全部楼层
回复 7# 986981535

我是想使用wmic命令实现, 现在问题 主要是筛选满足条件的网卡 ,用where筛选
 楼主| 发表于 2023-9-1 10:31:12 | 显示全部楼层
本帖最后由 小白龙 于 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地址什么的
发表于 2023-9-1 10:47:12 | 显示全部楼层
回复 5# 986981535


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

都会有多个IPv4同时存在
发表于 2023-9-1 10:48:27 | 显示全部楼层
回复 9# 小白龙


    10楼提到的几种情况也会有多个 NetEnabled=True 你可能还得区分到底选哪个
 楼主| 发表于 2023-9-1 10:52:44 | 显示全部楼层
本帖最后由 小白龙 于 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:47 | 显示全部楼层
回复 10# Batcher

大佬, 怎样判断是无线还是有线网卡呢, 没有找到相关的属性
虚拟机的网卡应该用 Physicaladapter=True 就能区分开吧
发表于 2023-9-1 16:25:52 | 显示全部楼层
回复 13# 小白龙


    太执着了,我使用的时候。bat不行试试power shell,再不行wmic也行。
 楼主| 发表于 2023-9-1 16:43:42 | 显示全部楼层
回复 14# 986981535


    就是在bat下用wmic命令, 用powershell启动太慢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 15:32 , Processed in 0.021590 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表