无忧启动论坛

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

批处理FOR命令如何把特定的文本内容提取出来?

[复制链接]
跳转到指定楼层
1#
发表于 2022-4-22 21:04:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
2#
发表于 2022-4-22 21:29:36 | 只看该作者
  1. @Echo off&SetLocal EnableDelayedExpansion&set n=0
  2. for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /i "主机名 MAC地址 IP地址 子网掩码 网关"')do call set "T%%n%%=%%i"&set /a n+=1
  3. for /l %%i in (0,1,4)do echo !T%%i!
  4. pause
复制代码

点评

这个在WIN7和WIN10上运行,不太可行.在WIN7上就显示ECHO处于打开状态。在WIN10上只显示出计算机名、子网掩码和网关,还有两行ECHO处于关闭状态  详情 回复 发表于 2022-4-23 10:38

评分

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

查看全部评分

回复

使用道具 举报

3#
发表于 2022-4-22 21:56:04 | 只看该作者
好货收藏
回复

使用道具 举报

4#
发表于 2022-4-22 22:14:03 | 只看该作者
个人感觉这个ipconfig /all的输出结果,对于for分析来说一点儿都不友好。

你需要考虑多个网卡的情况,一个网卡多个IP的情况,有无或多个默认网关的情况、有无或多个DNS的情况。

各种复杂的条件同样提升了分析命令输出的复杂性,不妨考虑wmic、netsh、ps、注册表等,也可以考虑第三方工具,本区就有。


翻了翻,我以前竟然写过通过其它方式实现的,注释说是支持单网卡多IP查询,你试试参考参考,暂时不打算完善。


查询IP配置.7z

959 Bytes, 下载次数: 38, 下载积分: 无忧币 -2

点评

这个不错,不过没能显示出正确的计算机名  详情 回复 发表于 2022-4-23 10:40
回复

使用道具 举报

5#
 楼主| 发表于 2022-4-23 10:38:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

6#
 楼主| 发表于 2022-4-23 10:40:51 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

7#
发表于 2022-4-23 10:44:21 | 只看该作者
bjay2008xmy 发表于 2022-4-23 10:40
这个不错,不过没能显示出正确的计算机名

计算机名有现成的变量%computername%,或者也可以分析hostname的输出

点评

我有一个简单的: @echo off ipconfig /all|find /I "主机名" ipconfig /all|find /I "物理地址" ipconfig /all|find /I "IPv4 地址" ipconfig /all|find /I "子网掩码" ipconfig /all|find /I "默认网关" pa  详情 回复 发表于 2022-4-23 11:01
回复

使用道具 举报

8#
 楼主| 发表于 2022-4-23 11:01:29 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

9#
发表于 2022-4-23 11:16:29 | 只看该作者
bjay2008xmy 发表于 2022-4-23 11:01
我有一个简单的:
@echo off
ipconfig /all|find /I "主机名"

上面说了,你这考虑的情况太少,只在某些情况下才能正常工作。

你看看10上面的默认网关、DNS是不是有空行开头的?肉眼看都能明白,但是命令不行,你这个明显过滤掉了,而且我这默认网关、DNS那行都是IPV6地址,这恐怕不是你想要的结果。
回复

使用道具 举报

10#
发表于 2022-4-23 13:19:01 来自手机 | 只看该作者
要配合findstr [0-9],,,
回复

使用道具 举报

11#
发表于 2022-4-23 20:21:50 | 只看该作者
bjay2008xmy 发表于 2022-4-23 10:38
这个在WIN7和WIN10上运行,不太可行.在WIN7上就显示ECHO处于打开状态。在WIN10上只显示出计算机名、子网 ...


smss 的方法虽然有小缺点 但简单高效,
我在 实机 测试 smss 的方法 Windows XP/7/10 通过.








点评

[attachimg]500208[/attachimg]  详情 回复 发表于 2022-4-23 21:15
回复

使用道具 举报

12#
 楼主| 发表于 2022-4-23 21:15:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

13#
 楼主| 发表于 2022-4-23 21:18:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

14#
 楼主| 发表于 2022-4-23 21:36:14 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

15#
 楼主| 发表于 2022-4-23 21:50:30 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

16#
发表于 2022-4-24 00:31:37 | 只看该作者
bjay2008xmy 发表于 2022-4-23 21:36
SMSS的代码简单高效,不过他把搜索的字符写错了,导致匹配不上。经过简单修改,可以正常运行。
@Echo off& ...

有 方法 提供,
其它的就要自己 领悟.

另外,
1. 我觉的 call 是多余的.
2. T%%n%% 写法复杂,用 T!n! 就可以了.
回复

使用道具 举报

17#
发表于 2022-4-24 00:38:35 | 只看该作者
bjay2008xmy 发表于 2022-4-23 21:50
再经修改版:可以去除IP地址后面带的"(首选)"
@Echo off&SetLocal EnableDelayedExpansion&set n=0
for ...

不需要写 2 个 For,
只要在第 1 个 For 加入 2,3 排除 ( 就可以了

繁体中文 是 (
看你的发文 简体中文 好像是  [


点评

咱也不懂,就是学习一下。你这个是自己改的,具体是怎么写的?  详情 回复 发表于 2022-4-24 01:13
回复

使用道具 举报

18#
 楼主| 发表于 2022-4-24 01:13:31 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

19#
发表于 2022-4-24 01:15:23 | 只看该作者
本帖最后由 plusv 于 2022-4-24 01:28 编辑
bjay2008xmy 发表于 2022-4-24 01:13
咱也不懂,就是学习一下。你这个是自己改的,具体是怎么写的?

不需要写 2 个 For,
只要在第 1 个 For 加入 2,3 排除 ( 就可以了




点评

谢谢。我发现其实tokens=2后面不用加,3也可以  详情 回复 发表于 2022-4-24 12:24
回复

使用道具 举报

20#
 楼主| 发表于 2022-4-24 12:24:36 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

21#
发表于 2022-4-24 12:52:46 来自手机 | 只看该作者
都不是问题,问题是只单连接有用。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-9-19 09:52

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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