无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 911|回复: 17
打印 上一主题 下一主题

[已解决] 按照对应关系,列出所有网卡的DeviceID,NAME,NetConnectionID

[复制链接]
跳转到指定楼层
1#
发表于 2024-6-6 11:10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Myptour 于 2024-6-8 02:14 编辑

找了一个代码,不是很理解
  1. @echo off
  2. :init
  3. setlocal DisableDelayedExpansion
  4. set "batchPath=%~0"
  5. for %%k in (%0) do set batchName=%%~nk
  6. set "vbsGetPrivileges=%temp%\MYSQL_INIT_getPriv_%batchName%.vbs"
  7. setlocal EnableDelayedExpansion
  8. :checkPrivileges
  9. NET FILE 1>NUL 2>NUL
  10. if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
  11. :getPrivileges
  12. if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
  13. ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
  14. ECHO args = "ELEV " >> "%vbsGetPrivileges%"
  15. ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
  16. ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
  17. ECHO Next >> "%vbsGetPrivileges%"
  18. ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
  19. "%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
  20. exit /B
  21. :gotPrivileges
  22. setlocal & pushd .
  23. cd /d %~dp0
  24. if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

  25. echo ========================
  26. echo   快速设置网卡IP:192.168.2.1                                          
  27. echo ========================
  28. REM 读取当前可以使用的网卡信息

  29. set num=1
  30. set no=1
  31. for /f "tokens=2 delims==" %%i in ('wmic nic where "not NetConnectionID is null" get NetConnectionID^,DeviceID /value') do (
  32.         set /a mo=!num!"%%"2
  33.         if "!mo!" == "0" (
  34.                 set NetID=%%i
  35.                 set "Obj[!no!].NetID=%%i"
  36.                 echo.
  37.                 echo     !no! 、 网卡名称:!NetID!
  38.                 set /a no+=1
  39.         )
  40.         set /a num+=1        
  41. )
  42. set /a no-=1

  43. pause>NUL
复制代码
上边代码执行结果如下,
  1. ============================
  2.   快速设置网卡IP:192.168.2.1
  3. ============================
  4.     1 、 网卡名称:以太网

  5.     2 、 网卡名称:WLAN
复制代码
我想要的目的如下在网卡名称后加上详细名称,便于识别,比如 : Intel(R) Ethernet Connection (4) I219-LM
请教各位老师该如何写
  1. =============================
  2.   快速设置网卡IP:192.168.2.1
  3. =============================

  4.     1 、 网卡名称:以太网:  Intel(R) Ethernet Connection (4) I219-LM

  5.     2 、 网卡名称:WLAN:  Intel(R) Dual Band Wireless-AC 8265

复制代码







2#
发表于 2024-6-6 11:54:26 | 只看该作者
'wmic nic where "not NetConnectionID is null" get NetConnectionID^,DeviceID /value' 加上Description就有对应信息了,再自行根据脚本调整下格式

点评

调不出来,这方面一直懵懵懂懂  详情 回复 发表于 2024-6-6 12:39
好人  发表于 2024-6-6 12:35

评分

参与人数 1无忧币 +2 收起 理由
yyz2191958 + 2 赞一个!

查看全部评分

回复

使用道具 举报

3#
发表于 2024-6-6 12:00:48 | 只看该作者
简单高效
回复

使用道具 举报

4#
 楼主| 发表于 2024-6-6 12:39:23 来自手机 | 只看该作者
holley2008 发表于 2024-6-6 11:54
'wmic nic where "not NetConnectionID is null" get NetConnectionID^,DeviceID /value' 加上Description ...

调不出来,这方面一直懵懵懂懂
回复

使用道具 举报

5#
发表于 2024-6-6 13:42:37 | 只看该作者
不懂这个
回复

使用道具 举报

6#
发表于 2024-6-6 14:01:04 | 只看该作者
感谢分享
回复

使用道具 举报

7#
发表于 2024-6-6 15:48:37 | 只看该作者
RE: 按照对应关系,列出所有网卡的DeviceID,NAME,NetConnectionID [修改]
回复

使用道具 举报

8#
发表于 2024-6-6 16:02:33 | 只看该作者
遇到过一次wmic无法使用的情况,导致整个机房无法在会计考试中使用,后分析是在查询网卡时使用了其中一种方法,改用另一种非WMIC查询就可以

点评

难道弄完就没测试一下  详情 回复 发表于 2024-6-6 16:29
回复

使用道具 举报

9#
发表于 2024-6-6 16:11:44 | 只看该作者
感谢分享
回复

使用道具 举报

10#
发表于 2024-6-6 16:29:11 来自手机 | 只看该作者
9zhmke 发表于 2024-6-6 16:02
遇到过一次wmic无法使用的情况,导致整个机房无法在会计考试中使用,后分析是在查询网卡时使用了其中一种方 ...

难道弄完就没测试一下

点评

系统下练WMI都没法用,那这个系统很多事情都不能干啊  详情 回复 发表于 2024-6-7 05:16
他们大面积测试过,但还是在我们这遇到问题了,后来我建议他们用两种方法同时取网卡值。  详情 回复 发表于 2024-6-6 20:12
回复

使用道具 举报

11#
发表于 2024-6-6 20:12:03 | 只看该作者
nttwqz 发表于 2024-6-6 16:29
难道弄完就没测试一下

他们大面积测试过,但还是在我们这遇到问题了,后来我建议他们用两种方法同时取网卡值。
回复

使用道具 举报

12#
发表于 2024-6-6 21:51:36 | 只看该作者
谢谢分享
回复

使用道具 举报

13#
发表于 2024-6-7 05:16:08 | 只看该作者
nttwqz 发表于 2024-6-6 16:29
难道弄完就没测试一下

系统下练WMI都没法用,那这个系统很多事情都不能干啊
回复

使用道具 举报

14#
发表于 2024-6-7 08:21:48 | 只看该作者
本帖最后由 dos时代菜鸟 于 2024-6-7 08:28 编辑

如下代码存成 vbs  

net_x.vbs
  1. On error resume  next
  2. Set os=CreateObject("wscript.shell")
  3. Set wmi=GetObject("winmgmts:\\.")
  4. Set nic=wmi.execQuery("select * from Win32_NetworkAdapter where netconnectionid<>NULL")
  5. Set nic_s=wmi.execQuery("select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

  6. '罗列网卡的mac信息、名称、对应网络连接、ip地址
  7. For Each pnp In nic
  8.   For Each pnp2 In nic_s
  9.     If pnp.macaddress=pnp2.macaddress Then
  10.         ip=pnp2.ipaddress(0)
  11.     End if
  12.   Next
  13.   WScript.echo Chr(34)&pnp.netconnectionid&Chr(34)&","&chr(34)&pnp.name&Chr(34)&","&Chr(34)&Replace(pnp.macaddress,":","-")&Chr(34)&","&ip&","&chr(34)&pnp.pnpdeviceid&chr(34)
  14. Next
复制代码


cmd 下 调用时  运行
  1. cscript //nologo net_x.vbs
复制代码

评分

参与人数 1无忧币 +5 收起 理由
Myptour + 5

查看全部评分

回复

使用道具 举报

15#
 楼主| 发表于 2024-6-8 02:12:40 | 只看该作者
@echo off
:init
setlocal DisableDelayedExpansion
set "batchPath=%~0"
for %%k in (%0) do set batchName=%%~nk
set "vbsGetPrivileges=%temp%\MYSQL_INIT_getPriv_%batchName%.vbs"
setlocal EnableDelayedExpansion
:checkPrivileges
NET FILE 1>NUL 2>NUL
if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )
:getPrivileges
if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
ECHO args = "ELEV " >> "%vbsGetPrivileges%"
ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
ECHO Next >> "%vbsGetPrivileges%"
ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
"%SystemRoot%\System32\WScript.exe" "%vbsGetPrivileges%" %*
exit /B
:gotPrivileges
setlocal & pushd .
cd /d %~dp0
if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)


::==================================================================================
::判断是否有相同的MAC,如果相同就直接运行Serf命令,不同就手动选择
del mac2.ini >nul 2>nul
if not exist mac.ini goto :startn
findstr "物理地址" mac.ini ||del mac.ini>nul  &&goto :startn

findstr /c:"物理地址" mac.ini >mac2.ini
for /f "tokens=2 delims=:" %%i in (mac2.ini) do set mac3=%%i
ipconfig /all | findstr /c:"%mac3:~1, 17%">nul 2>nul
if errorlevel 1 (echo.不存在 "%mac3:~1, 17%" &&goto :startn)
cls
if errorlevel 0 (echo.已存在 "%mac3:~1, 17%" &&goto :checkip)

:checkip
netsh interface ipv4 set global dhcpmediasense=disabled >nul
nbtstat -n | findstr /c:"192.168.2.1" >nul 2>nul
if errorlevel 1 (echo.不存在 "192.168.2.1" &&goto :startn)
if errorlevel 0 (echo.已存在 "192.168.2.1" &&echo.=======================================&&goto :waitinput)
::=============================================================================

:waitinput
@echo off&if not "%1"=="" call%*&exit||{zb-2024-06-05}
::纯批实现等待指定输入

:begin
call:timeout 5 :tsk1 0 :tsk2
:tsk1
echo\&echo 【默认计划】
goto :Serf
:tsk2
echo\&echo 【自定义计划】
goto :reset


:: /*----------------- timeout --------------------
:timeout [num] [:label1] [STR] [:LABEL2]
setlocal&del/a/q %tmp%\' 2>nul||(echo 未知错误!&pause&exit)
start/b/REALTIME %~s0 :timeout_1 %1 %2 %3 %4
:timeout_2
set "v="
set/p v=
if %v%.==%3. title %ComSpec%&cd.>%tmp%\'&endlocal&goto%4
if exist %tmp%\' exit ::没有输入,退出timeout
goto:timeout_2
:timeout_1 [num] [:label1] [STR] [:LABEL2]
for /l %%a in (%1 -1 0)do (
   title 【倒计时:%%a秒内输入:"%3" 重置网络】
   if exist %tmp%\' title %ComSpec%&exit
   ping/n 2 127.1 >nul)
title %ComSpec%&cd.>%tmp%\'&goto%2
:: /*------------------ timeout -------------------*/

::====================================================================================
:startn
setlocal EnableDelayedExpansion
del abc.txt>nul 2>nul

::获取网卡列表
for /f "tokens=2 delims==" %%i in ('wmic nic where "not NetConnectionID is null" get Name^,NetConnectionID^,DeviceID /value') do (echo.%%i>>abc.txt)
::获取abc.txt行数
type abc.txt | find /c /v "">m.ini
set /p m=<m.ini

::选择第n行, 设置变量为a1=?, a2=?, a3=?, an=????
set n=1
set /a n-=1
if "%n%"=="0" (set "skip=") else (set "skip=skip=%n%")

for /f "%skip% tokens=* delims=" %%i in (abc.txt) do (
set /a nn=!n!+1
set "a=a!nn!=%%i" &&call :a
)
echo ===================================
echo.%a1%
echo.%a2%
echo.%a3%
echo............
echo ===================================
cls
goto :startMe

:a
echo.!a!&&set !a!
cls
set /a n=!n!+1
goto :eof


:startMe
::=====================================================================================
title  快速设置网卡IP
echo.
echo.               快速设置网卡IP:192.168.2.1                                          
echo ===================================================================================

::网卡类别排序:
set y=1
for /l %%i in (3, 3, %m%) do (
   REM echo.
   REM echo            !y!   !a%%i!
       set  "z!y!=!a%%i!"
       set /a y=!y!+1
)
set /a y-=1


::网卡详细名称:
set q=1
for /l %%i in (2, 3, %m%) do (
       echo.
       echo            !q!    !a%%i!
       set  "c!q!=!a%%i!"
       set /a q=!q!+1
)
rem set /a q-=1



echo ====================================================================================
echo.
set /a maxnum=%m%/3
set /p choice=选择网卡:  
echo.
set  choiceNetID=!z%choice%!
set  choiceNNAME=!c%choice%!
echo.
if "%choice%" == "0" (goto :reset)
if %choice% leq %maxnum% (goto :aaa)
if %choice% gtr %maxnum% (cls&&echo.&&echo.序号输入错误, 请重新输入&&timeout 2&&goto :startn)

::重置网络
:reset
cls
set num=1
set no=1
for /f "tokens=2 delims==" %%i in ('wmic nic where "not NetConnectionID is null" get NetConnectionID^,DeviceID /value') do (
        set /a mo=!num!"%%"2
        if "!mo!" == "0" (
                set NetID=%%i

                set "Obj[!no!].NetID=%%i"
                rem echo     !no! 、 网卡名称:!NetID!
                echo.正在重置 !NetID:~0,-2!
                del mac.ini>nul 2>nul
                del ipmac.ini>nul 2>nul
                @echo 自动获取ip地址>nul
                netsh int ip set add name="!NetID:~0,-2!" source=dhcp>nul
                @echo 自动获取DNS服务器>nul
                netsh int ip set dns name="!NetID:~0,-2!" source=dhcp>nul
                @echo 正在设置DNS为自动获取>nul
                netsh interface ip set dns name="!NetID:~0,-2!" source=dhcp>nul
                set /a no+=1
        )
        set /a num+=1        
)
set /a no-=1
echo.
echo.网络重置完成!
goto :startn


echo ==================================================================================
:aaa
echo.当前网卡:  !choice!    !c%choice%!
echo.
choice /t 1 /d y /n>nul
netsh interface ip set address "%choiceNetID%" static 192.168.2.1 255.255.255.0
goto :findmac


echo ----------------------------------------分割线-------------------------------------------------
echo ========================================
echo  1、启用
echo  2、禁用
echo  3、重启
echo  4、设置IP:192.168.2.1
echo.
set /p choice_type=请选择操作:
echo ========================================

if "%choice_type%" == "1" (
        echo 正在启用网卡:!choiceNetID!
        netsh interface set interface name="%choiceNetID%" admin=ENABLED
        goto :startMe
)

if "%choice_type%" == "2" (
        echo 正在禁用网卡:!choiceNetID!
        netsh interface set interface name="%choiceNetID%" admin=DISABLED
        goto :startMe
)

if "%choice_type%" == "3" (
        echo 正在重启网卡:!choiceNetID!
        netsh interface set interface name="%choiceNetID%" admin=DISABLED
        netsh interface set interface name="%choiceNetID%" admin=ENABLED
        goto :startMe
)

if "%choice_type%" == "4" (
    netsh interface ip set address "%choiceNetID%" static 192.168.2.1 255.255.255.0
        goto :findmac
)
goto :aaa
echo ----------------------------------------分割线-------------------------------------------------


:findmac
ipconfig /all>ipmac.ini

::查找网卡名称下4行
For /f "tokens=1* delims=:" %%i in ('Type ipmac.ini^|Findstr /n /c:"%choiceNetID%:"') do (Set n=&Set /a n=%%i+4 && Echo %%j>mac.ini)
For /f "tokens=1* delims=:" %%a in ('Type ipmac.ini^|Findstr /n /c:"."') do (If %%a==!n! Echo %%b>>mac.ini &&set /a n=!n!+1 )
rem For /f "tokens=1* delims=:" %%a in ('Type ipmac.ini^|Findstr /n /c:"."') do (If %%a==!n! Echo %%b>>mac.ini)


:Serf
del ipmac.ini >nul 2>nul
del mac2.ini >nul 2>nul
title 【Iperf3-网络对传】
cls
echo.!c%choice%!
iperf3.exe -s






回复

使用道具 举报

16#
发表于 2024-6-8 04:17:33 | 只看该作者
感谢分享
回复

使用道具 举报

17#
发表于 2024-6-8 22:16:38 | 只看该作者
把31行以后全部替换一下代码即可得到你要的结果。
  1. set no=1
  2. for /f "tokens=1* delims==" %%a in ('wmic nic where "not NetConnectionID is null" get NetConnectionID^,Description /value') do (
  3.    if "%%a" == "Description" (
  4.         for /f "tokens=*" %%c in ("%%b") do (set "netcard=%%c")
  5.     ) else if "%%a" == "NetConnectionID" (
  6.         for /f "tokens=*" %%c in ("%%b") do (set "netid=%%c")
  7.         echo.
  8.         echo !no! 、 网卡名称: !netid!  !netcard!
  9.         set /a no+=1
  10.     )
  11. )
  12. pause>NUL
复制代码

评分

参与人数 1无忧币 +5 收起 理由
Myptour + 5 很给力!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-6-17 21:18

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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