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

[网络连接] 思路征集:批处理获取本地连接的名称

中文系统,默认是"本地连接";英文系统,默认是"Local Area Connection";其它语言操作系统,未知;此外,用户还可能自己修改了本地连接的名称。如何用批处理来获取本地连接的名称呢?我先抛个砖:
  1. @echo off
  2. rem 获取本地连接名称
  3. rem WinXP SP2 EN 测试通过
  4. rem WinXP SP3 CS 测试通过
  5. reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards" "%temp%\MyNet.reg" >nul
  6. for /f "tokens=1 delims=:" %%a in ('type "%temp%\MyNet.reg"^|findstr /n Ethernet') do (
  7.   set "DstRow=%%a"
  8.   goto :next
  9. )
  10. goto :eof
  11. :next
  12. set /a SkpRow=DstRow-2
  13. for /f "skip=%SkpRow% tokens=2 delims={}" %%a in ('type "%temp%\MyNet.reg"^|findstr .*') do (
  14.   for /f "skip=6 tokens=*" %%b in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{%%a}\Connection"') do (
  15.     set LcoNet=%%b
  16.     call echo %%LcoNet:~12%%
  17.     goto :eof
  18.   )
  19. )
复制代码
感谢8楼提供的测试用例!
1

评分人数

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

  1. @echo off
  2. for /f "tokens=2 delims==" %%a in ('wmic nic get netconnectionid /value') do set "var=%%a"&call echo %%var%%&pause>nul&exit/b
复制代码
中文版系统测试通过,英文版我没有测试环境,还请BATCHER兄测试。
-----------------------------------------------
我发帖了才想起2K中貌似没有WMIC,要适用于所有系统吗?

[ 本帖最后由 pusofalse 于 2008-8-30 18:47 编辑 ]
心绪平和,眼藏静谧。

TOP

测试BATCHER兄的代码出错:
  1. C:\Documents and Settings\Administrator\桌面>(for /F "skip=6 tokens=*" %b in ('r
  2. eg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-
  3. E325-11CE-BFC1-08002BE10318}\{5FBB2E38-FBE8-4F2D-908A-88FA06960529}\Connection"'
  4. ) do (
  5. set LcoNet=%b
  6. call set LcoNet=%LcoNet:        =%
  7. call echo %LcoNet:~10%
  8. goto :eof
  9. ) )
  10. 错误: 系统找不到指定的注册表项或值
复制代码
  1. Microsoft Windows XP [版本 5.1.2600]
  2. (C) 版权所有 1985-2001 Microsoft Corp.
  3. C:\Documents and Settings\Administrator\桌面>reg query "HKEY_LOCAL_MACHINE\SYSTE
  4. M\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{5FBB
  5. 2E38-FBE8-4F2D-908A-88FA06960529}\Connection"
  6. 错误: 系统找不到指定的注册表项或值
复制代码
心绪平和,眼藏静谧。

TOP

回复 3楼 的帖子

你的注册表里面有没有这个分支:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{5FBB2E38-FBE8-4F2D-908A-88FA06960529}\Connection

能否把你的本地连接所在的注册表分支贴出来看看?应该在这个下面的其中一个:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2楼 的帖子

WinXP SP2 EN 测试结果
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Test>test.bat
ECHO is off.

C:\Test>wmic nic get netconnectionid /value

NetConnectionID=
NetConnectionID=
NetConnectionID=
NetConnectionID=
NetConnectionID=
NetConnectionID=
NetConnectionID=
NetConnectionID=
NetConnectionID=
NetConnectionID=
NetConnectionID=Local Area Connection
NetConnectionID=
NetConnectionID=Wireless Network Connection
NetConnectionID=
NetConnectionID=1394 Connection
NetConnectionID=
NetConnectionID=
NetConnectionID=
NetConnectionID=VMware Network Adapter VMnet1
NetConnectionID=VMware Network Adapter VMnet8
NetConnectionID=
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

这是我的注册表信息,能找到本地连接,但不在{5FBB2E38-FBE8-4F2D-908A-88FA06960529}这个项里。
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}]
  3. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\Descriptions]
  4. "Broadcom NetLink (TM) Gigabit Ethernet"=hex(7):31,00,00,00,00,00
  5. "Intel(R) PRO/Wireless 3945ABG Network Connection"=hex(7):31,00,00,00,00,00
  6. "1394 网络适配器"=hex(7):31,00,00,00,00,00
  7. "数据包计划程序微型端口"=hex(7):31,00,00,00,32,00,00,00,33,00,00,00,34,00,00,00,35,00,00,\
  8.   00,00,00
  9. "WAN 微型端口 (Network Monitor)"=hex(7):31,00,00,00,00,00
  10. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{5765CB79-7D9F-443E-849D-51EAB9A8895E}]
  11. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{5765CB79-7D9F-443E-849D-51EAB9A8895E}\Connection]
  12. "PnpInstanceID"="PCI\\VEN_8086&DEV_4222&SUBSYS_10028086&REV_02\\4&192AC53F&0&00E0"
  13. "MediaSubType"=dword:00000002
  14. "Name"="无线网络连接"
  15. "IpCheckingEnabled"=dword:00000000
  16. "ShowIcon"=dword:00000001
  17. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{5D4BF871-B3AC-4806-869C-B859C0B73BC3}]
  18. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{5D4BF871-B3AC-4806-869C-B859C0B73BC3}\Connection]
  19. "PnpInstanceID"="PCI\\VEN_14E4&DEV_169C&SUBSYS_207517AA&REV_03\\4&6B16D5B&0&38F0"
  20. "MediaSubType"=dword:00000001
  21. "Name"="本地连接"
  22. "IpCheckingEnabled"=dword:00000000
  23. "ShowIcon"=dword:00000001
  24. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{7F63BF53-CFEF-482C-95E8-DBE1B67EFB39}]
  25. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{7F63BF53-CFEF-482C-95E8-DBE1B67EFB39}\Connection]
  26. "PnpInstanceID"="V1394\\NIC1394\\C1C18EC09F00"
  27. "MediaSubType"=dword:00000005
  28. "Name"="1394 连接"
  29. "IpCheckingEnabled"=dword:00000000
复制代码
心绪平和,眼藏静谧。

TOP

reg export导出的"%temp%\MyNet.reg"里面有没有{5D4BF871-B3AC-4806-869C-B859C0B73BC3}?
第一个for命令有没有正确的把{5D4BF871-B3AC-4806-869C-B859C0B73BC3}所在行赋值给变量DstRow?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

这是提取的信息:
  1. Windows Registry Editor Version 5.00
  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards]
  3. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\10]
  4. "ServiceName"="{5765CB79-7D9F-443E-849D-51EAB9A8895E}"
  5. "Description"="Intel(R) PRO/Wireless 3945ABG Network Connection"
  6. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\11]
  7. "ServiceName"="{7F63BF53-CFEF-482C-95E8-DBE1B67EFB39}"
  8. "Description"="1394 网络适配器"
  9. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\2]
  10. "ServiceName"="{5D4BF871-B3AC-4806-869C-B859C0B73BC3}"
  11. "Description"="Broadcom NetLink (TM) Gigabit Ethernet"
  12. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\9]
  13. "ServiceName"="{5FBB2E38-FBE8-4F2D-908A-88FA06960529}"
  14. "Description"="Realtek RTL8139 Family PCI Fast Ethernet NIC"
复制代码
心绪平和,眼藏静谧。

TOP

回复 8楼 的帖子

知道原因了,双网卡。修改一下第一个for命令就行了,我稍后在顶楼更新。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set count=0
  4. for /f "delims=:" %%a in ('ipconfig^|find /i "Ethernet adapter"') do (
  5.   set /a count+=1
  6.   call :GetName "%%a" !count!
  7. )
  8. for /f "tokens=2 delims==" %%a in ('set LocalConn_') do (
  9.   echo/%%a
  10. )
  11. goto :eof
  12. :GetName
  13. set "str=%1"
  14. set LocalConn_%2=%str:~18,-1%
复制代码
1

评分人数

TOP

nbtstat -n

TOP

netsh interface show interface

TOP

回复 12楼 的帖子

然后怎么确定哪个是呢?
C:\Test>netsh interface show interface

Admin State    State          Type             Interface Name
-------------------------------------------------------------------------
Enabled                       Dedicated        Wireless Network Connection
Enabled                       Dedicated        Local Area Connection
Enabled                       Dedicated        VMware Network Adapter VMnet1
Enabled                       Dedicated        VMware Network Adapter VMnet8
Enabled                       Dedicated        1394 Connection
Enabled                       Internal         Internal
Enabled                       Loopback         Loopback
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 13楼 的帖子

嘿嘿,你在顶楼不是说了吗:英文系统,默认是"Local Area Connection";^_^

TOP

回复 14楼 的帖子

关键是后面那句“此外,用户还可能自己修改了本地连接的名称。”
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表