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

[文本处理] [已解决]BAT如何批量提取命令输出结果作为变量并汇总显示指定行

本帖最后由 thp2008 于 2020-10-7 14:19 编辑

求助各位批处理大神

当我在Windows 10命令行下运行如下命令:

netsh wlan show profile

得到的结果如下:
接口 WLAN 上的配置文件:


组策略配置文件(只读)
---------------------------------
    <无>

用户配置文件
-------------
    所有用户配置文件 : 1320-1325_5G
    所有用户配置文件 : Xiaomi_6679_9AC7_5G
    所有用户配置文件 : 1320-1325
    所有用户配置文件 : CMCC-10086
    所有用户配置文件 : CMCC-UNYS
    所有用户配置文件 : Wifi6_5G
    所有用户配置文件 : Super5G
    所有用户配置文件 : Super_500M
    所有用户配置文件 : Samsung
    所有用户配置文件 : Wifi6
    所有用户配置文件 : 中国电信
    所有用户配置文件 : DIRECT-FEZ0:ILCE-7RM4

问题1.请问我如何自动,将输出结果中的“所有用户配置文件 : ”后面的部分,自动作为变量,这个需要如何处理?

我是想将上述变量,用在下列命令中

netsh wlan show profiles "上述变量"

示例:netsh wlan show profiles "Super_500M"

输出结果如下:

C:\>netsh wlan show profiles "Super_500M"

接口 WLAN 上的配置文件 Super_500M:
=======================================================================

已应用: 所有用户配置文件

配置文件信息
-------------------
    版本                   : 1
    类型                   : 无线局域网
    名称                   : Super_500M
    控制选项               :
        连接模式           : 手动连接
        网络广播           : 只在网络广播时连接
        AutoSwitch         : 请勿切换到其他网络
        MAC 随机化: 禁用

连接设置
---------------------
    SSID 数目              : 1
    SSID 名称              :“Super_500M”
    网络类型               : 结构
    无线电类型             : [ 任何无线电类型 ]
    供应商扩展名           : 不存在

安全设置
-----------------
    身份验证         : WPA2 - 个人
    密码                 : CCMP
    身份验证         : WPA2 - 个人
    密码                 : GCMP
    安全密钥               : 存在

费用设置
-------------
    费用                : 无限制
    阻塞                : 否
    接近数据限制        : 否
    过量数据限制        : 否
    漫游                : 否
    费用来源            : 默认


C:\>

问题2. 我想把这个示例输出的结果中,批量提取输出结果中的三行,显示结果样式如下:

1、 SSID 名称              :“Super_500M”      
身份验证         : WPA2 - 个人
安全密钥               : 存在

2、SSID 名称              :“1320-1325_5G”
身份验证         : WPA2 - 个人      
安全密钥               : 存在

3、SSID 名称              :“Xiaomi_6679_9AC7_5G”   
身份验证         : WPA2 - 个人   
安全密钥               : 存在

4、SSID 名称              :“中国电信”        
身份验证         : WPA2 - 个人
安全密钥               : 存在

5、SSID 名称              :“DIRECT-FEZ0:ILCE-7RM4”        
身份验证         : WPA2 - 个人
安全密钥               : 不存在
.................

应该如何编写。

其实,概括来说,就是我想写个批处理,将“netsh wlan show profile”输出的结果,作为变量,自动带到  netsh wlan show profiles "上述变量" 这条命令中来。
然后,在每条 netsh wlan show profiles "上述变量" 命令输出的结果中提取我需要的三行,最后汇总,排列,输出这三行结果的,一个批处理。


谢谢各位大神!

回复 1# thp2008


请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims=:" %%i in ('netsh wlan show profile ^| findstr "所有用户配置文件"') do (
  4.     set "ProfileName=%%i"
  5.     netsh wlan show profiles "!ProfileName:~1!" | findstr /i /c:"SSID 名称" /c:"身份验证" /c:"安全密钥"
  6. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复  thp2008


请参考Q-04把bat文件保存为ANSI编码:
Batcher 发表于 2020-10-6 23:28



    感谢大神出手相助,完全满足要求,我稍做修改,明白怎么处理这种情况了,非常感谢!

TOP

返回列表