[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]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

本帖最后由 gobi918 于 2014-5-8 15:22 编辑

我也来一个来个XP/WIN7/简繁体通吃的连线名称获取代码:
  1. rem 以上内容略   
  2. for /f tokens^=1^,2^ delims^=^" %%j in ('netsh interface ip show config') do (        
  3.        if "%%j"=="介面 " (  
  4.        echo 连线名称为:%%k      
  5.     )  
  6.        if "%%j"=="接口 " (  
  7.        echo 连线名称为:%%k   
  8.      )   
  9. )  
  10. pause
复制代码
Ps:繁体系统中显示为介面,简体则为接口,不过win7好像会有一个Loopback Pseudo-Interface的回环网卡,所以代码实际使用可能需要加入排除判断,比如下面使用中,我仅设置第一块网卡,然后跳出for循环。

还是之前在博客写的,其中%%k则为连线名称,原文地址:http://zhangge.net/497.html

后面还写了一个GHOST系统自动恢复系统安装之前的IP设置的脚本,下面是截取一部分代码,结合了上面获取连线名称的代码,供参考:
  1. .....以上略....
  2. rem 獲取第一塊網卡的名稱,并設置IP,多塊網卡將仅設置第一塊   
  3. for /f tokens^=1^,2^ delims^=^" %%j in ('netsh interface ip show config') do (         
  4.             
  5.                 if "%%j"=="介面 " (  
  6.                   netsh interface ip set address name="%%k" source=static addr=!addr! mask=!mask! gateway=!gateway!      
  7.                   call :end                       
  8.                         
  9.                        )   
  10.                 if "%%j"=="接口 " (   
  11.                     netsh interface ip set address name="%%k" source=static addr=!addr! mask=!mask! gateway=!gateway!      
  12.                     call :end                     
  13.             )           
  14.         )      
  15. :end   
  16. echo 設置完畢,3S后自動退出!   
  17. ping -n 3 127.1 >nul   
  18. exit   
  19. ...以下略....
复制代码
有兴趣的可以到原文看看:http://zhangge.net/1885.html

TOP

本帖最后由 jbcdidgosir 于 2013-3-4 14:13 编辑
我也来一段简单点的

[ 本帖最后由 hmlstfqtl 于 2010-5-19 12:06 编辑 ]
hmlstfqtl 发表于 2010-5-19 11:33



    用你的程序我查到了Local Area Connection 2,但是Local Area Connection和Wireless Network Connection查不到,请问怎么才能做到全查到,并且挑选出来?我要挑选网关为192.168.1.1的网卡的名字.谢谢!

TOP

回复 1# Batcher

这是我的MyNet.reg文件,里面没有Local Area Connection 2,请管理员指点,谢谢!

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\11]
"ServiceName"="{62F14956-B754-4691-BFE2-0B42924D0D80}"
"Description"="Intel(R) Wireless WiFi Link 4965AG"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\9]
"ServiceName"="{87C0AE26-3795-4B1B-9205-D12DCE46790E}"
"Description"="Intel(R) 82566MM Gigabit Network Connection"

TOP

问题已解决,代码如下:

@echo off
for /f "delims=:" %%I in ('ipconfig ^| find /i "Ethernet"') do set LAC=%%I
set LAC=%LAC:~15%
echo "%LAC:~0,-1%"
REM 然后我就给它来一条加DNS的命令
netsh interface ip set dns "%LAC:~0,-1%" static 192.168.0.1
pause

非常感谢本帖的各位高手给予的启发,让末学能够尝试使用批处理脚本解决工作中的问题。

注意:本楼代码仅适用于法语环境,简中环境的楼主的代码或14楼的就可以。

TOP

本帖最后由 kstg4782964 于 2011-4-22 09:49 编辑

大家好!
末学是新人……从事国际化测试工作,自己在研究在不同语言平台下获取“本地连接”。
经测试发现:楼主大侠和14楼的高手的代码不能在WIN 7平台下通过。
14楼高手的代码可以应用于英,日,德,韩,俄,繁中语言的2008 server 平台下。

但在西班牙语中,代码“set LAC=%LAC:~17%”应该为“set LAC=%LAC:~22%”,这样也能够正常使用

问题出在法语上,当我IPCONFIG时,发现它的“本地连接”名和最后的“:”之间有一个空格!!
如果将这样获取过来的名字用于其它地方,因为本身多了一个空格,与原名不符,所以出错。

但在“NCPA.cpl”中查看该连接名时,发现空格是不存在的。

就因为法语中的这个空格,该批处理就不能用于法语环境,纠结!

通过测试的语言和环境平台有:
      WIN XP     WIN 7    WIN 2003     WIN 2008
EN        √
DE        √            √
JA   √         √
SC             ×
TC   √
KO        √             √
RU        √
ES                      √
FR                      ×

附图:
1.英文

2.法语


感谢楼主大侠的帖子,让我能够得以在此找到问题的解决方法。

等待高人赐予解决方法!(图片需要登录百度才可见,相信大家都有百度帐号吧:))

TOP

systeminfo |findstr "连接名"
不是英文版,也不清楚find什么关键字

TOP

我也来一段简单点的
  1. @echo off
  2. for /f "delims=:" %%I in ('ipconfig ^| find /i "Ethernet"') do set LAC=%%I
  3. set LAC=%LAC:~17%
  4. echo %LAC%
  5. pause
复制代码

[ 本帖最后由 hmlstfqtl 于 2010-5-19 12:06 编辑 ]

TOP

10楼 ipconfig  这个好
不明白 怎么不在第一个FOR里显示  CALL 出来 我怎么感觉多余了

TOP

回复 15楼 的帖子

一样看得到吧,英文版的没试...

TOP

回复 14楼 的帖子

关键是后面那句“此外,用户还可能自己修改了本地连接的名称。”
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或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

回复 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

netsh interface show interface

TOP

nbtstat -n

TOP

返回列表