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

[文本处理] [已解决]批处理如何获取网络接口名称/网络连接名称

本帖最后由 pcl_test 于 2016-8-9 10:04 编辑

教我怎么过滤(批处理命令find)这段文本,谢谢!
小弟,不懂BAT,求助大神帮助过滤拆分这段文本,谢谢!

我用“netsh interface show interface >d:\network.txt”

在输出文本中得到:

管理员状态     状态           类型             接口名称
------------------------------------------------------------------------
已启用            已连接            专用               本地连接
已禁用            已断开连接          专用               无线网络连接 2
已启用            已连接            专用               无线网络连接


————但,我只想在输出文本中仅仅保存几个接口名称即可,即分行输出:
本地连接
无线网络连接 2
无线网络连接


——————看似简单,但我实在弄不来,谢谢大神援手了!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 yangfengoo 于 2015-5-19 17:51 编辑
  1. >d:\network.txt (for /f "skip=2 tokens=3* delims= " %%a in ('netsh interface show interface') do echo,%%b)
复制代码

TOP

  1. @(for /f "tokens=3*" %%a in ('netsh interface show interface^|more +2') do @echo,%%b)>"d:\network.txt"
复制代码

TOP

回复 2# yangfengoo


    “无线网络连接 2”有空格,tokens=4是不对的
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

pcl_test 发表于 2015-5-19 15:11



    netsh interface show interface>mac-win7.txt
netsh interface show interface>mac-xp.txt
  1. @(for /f "tokens=3*" %%a in ('netsh interface show interface^|more +2') do @echo,%%b)
复制代码
这个只能在win7系统下显示名称。。
xp系统下,不能显示?

如何弄成通用xp和win7系统的代码?
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

本帖最后由 locoman 于 2015-5-19 19:09 编辑

各位大神真热心,谢谢帮助。
以上各位写的代码都能有过滤成果,但是,还是有点没有完全达到标准要求:
各位代码输出的结果是:

D:\>echo,本地连接
本地连接

D:\>echo,无线网络连接
无线网络连接


----------------------
而我要的是,仅仅保留真实的接口名称,其余任何多余都不能要的,这样才方便二次使用。而各位的代码输出结果既有多余的部分,而且还有空行。我仅仅需要这样:谢谢再帮帮优化:-------------
本地连接
无线网络连接

TOP

本帖最后由 locoman 于 2015-5-19 19:22 编辑
pcl_test 发表于 2015-5-19 15:11


@(for /f "tokens=3*" %%a in ('netsh interface show interface^|more +2') do @echo,%%b)>"d:\network.txt"

这段代码,输出是标准要求的。
谢谢,再多找几个不同的系统测试后结贴。

TOP

回复 5# ygqiang
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('netsh interface show interface^|more +3') do (
  3. set "str=%%a"
  4. for /f "tokens=*" %%b in ("!str:~46!") do echo,%%b
  5. )
  6. pause
复制代码

TOP

回复  ygqiang
pcl_test 发表于 2015-5-19 19:48



    xp和win7系统都测试了。。。

xp系统下显示结果,还是有点小问题。。。
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('netsh interface show interface^|more +3') do (
  3. set "str=%%a"
  4. for /f "tokens=*" %%b in ("!str:~46!") do echo,%%b
  5. )
  6. pause
复制代码
附件: 您需要登录才可以下载或查看附件。没有帐号?注册

TOP

本帖最后由 pcl_test 于 2015-5-19 23:48 编辑

回复 9# ygqiang

如果你所说的小问题是不想显示“环回”和“内部”,那么改为('netsh interface show interface^|find "连接"')

TOP

回复  ygqiang

如果你所说的小问题是不想显示“环回”和“内部”,那么改为('netsh interface show int ...
pcl_test 发表于 2015-5-19 23:44



    多谢。。好用了。。。

TOP

本帖最后由 locoman 于 2015-5-20 10:19 编辑

测试情况汇报:
一、
@(for /f "tokens=3*" %%a in ('netsh interface show interface^|more +2') do @echo,%%b)>"d:\network.txt"

1、在WIN7下测试正常
2、在WINXP测试不正常:
——该机器有两张有线网卡,网卡连接名分别为“内网”、“外网”。实际测试输出文本显示为:
输出的文本内容是空的,没有任何东西

二、
@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%a in ('netsh interface show interface^|find "连接"') do (
set "str=%%a"
for /f "tokens=*" %%b in ("!str:~46!") do echo,%%b
)
pause

1、在WIN7下测试正常。
2、在WINXP下测试不正常:
——该机器有两张有线网卡,网卡连接名分别为“内网”、“外网”。实际测试输出文本显示为:
本地连接
请按任意键继续. . .

三、
@echo off & setlocal enabledelayedexpansion
for /f "delims=" %%a in ('netsh interface show interface^|more +3') do (
set "str=%%a"
for /f "tokens=*" %%b in ("!str:~46!") do echo,%%b
)
pause

1、在WIN7下测试正常。
2、在WINXP下测试不正常:
——该机器有两张有线网卡,网卡连接名分别为“内网”、“外网”。实际测试输出文本显示为:
内网
本地连接
外网
环回
内部
请按任意键继续. . .
-------------
需特别注意的是:该机器只有两张有线网卡,名称为“内网”、“外网”,怎么多了一个“本地连接”呢?——————


另:
------如果你所说的小问题是不想显示“环回”和“内部”,那么改为('netsh interface show interface^|find "连接"')----

————————
这样也是不可行的,上面的实例就说明问题了:客户机已将网卡名称修改为自己特有的名称:“内网”、“外网”。



——————呵呵,一个看似简单的问题,还有这么多的名堂,有劳各位大神了!!

TOP

本帖最后由 pcl_test 于 2015-5-21 17:50 编辑

回复 12# locoman
  1. @echo off & setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('netsh interface show interface^|findstr /rv "环回 内部"^|more +3') do (
  3. set "str=%%a"
  4. for /f "tokens=*" %%b in ("!str:~46!") do echo,%%b
  5. )
  6. pause
复制代码

TOP

回复  locoman
pcl_test 发表于 2015-5-20 10:22


13楼的代码测试情况汇报:

1、在WIN7中测试正常。

2、在WINXP中测试不正常:
该机实际上只有两张网卡,分别命名为“内网”、“外网”。测试输出的文件显示为:
内网
本地连接
外网
环回
内部

TOP

本帖最后由 pcl_test 于 2015-5-21 17:55 编辑

回复 14# locoman
xp   为何改名了还有本地连接???
1、命令提示符里运行该命令netsh interface show interface,截图发上来
2、右键网络邻居,属性,截图发上来

TOP

返回列表