无忧启动论坛

标题: 批处理FOR命令如何把特定的文本内容提取出来? [打印本页]

作者: bjay2008xmy    时间: 2022-4-22 21:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: smss    时间: 2022-4-22 21:29
  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
复制代码

作者: 2013yang586    时间: 2022-4-22 21:56
好货收藏
作者: nttwqz    时间: 2022-4-22 22:14
个人感觉这个ipconfig /all的输出结果,对于for分析来说一点儿都不友好。

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

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


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


查询IP配置.7z

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


作者: bjay2008xmy    时间: 2022-4-23 10:38
提示: 作者被禁止或删除 内容自动屏蔽
作者: bjay2008xmy    时间: 2022-4-23 10:40
提示: 作者被禁止或删除 内容自动屏蔽
作者: nttwqz    时间: 2022-4-23 10:44
bjay2008xmy 发表于 2022-4-23 10:40
这个不错,不过没能显示出正确的计算机名

计算机名有现成的变量%computername%,或者也可以分析hostname的输出
作者: bjay2008xmy    时间: 2022-4-23 11:01
提示: 作者被禁止或删除 内容自动屏蔽
作者: nttwqz    时间: 2022-4-23 11:16
bjay2008xmy 发表于 2022-4-23 11:01
我有一个简单的:
@echo off
ipconfig /all|find /I "主机名"

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

你看看10上面的默认网关、DNS是不是有空行开头的?肉眼看都能明白,但是命令不行,你这个明显过滤掉了,而且我这默认网关、DNS那行都是IPV6地址,这恐怕不是你想要的结果。
作者: 江南一根葱    时间: 2022-4-23 13:19
要配合findstr [0-9],,,
作者: plusv    时间: 2022-4-23 20:21
bjay2008xmy 发表于 2022-4-23 10:38
这个在WIN7和WIN10上运行,不太可行.在WIN7上就显示ECHO处于打开状态。在WIN10上只显示出计算机名、子网 ...


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









作者: bjay2008xmy    时间: 2022-4-23 21:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: bjay2008xmy    时间: 2022-4-23 21:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: bjay2008xmy    时间: 2022-4-23 21:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: bjay2008xmy    时间: 2022-4-23 21:50
提示: 作者被禁止或删除 内容自动屏蔽
作者: plusv    时间: 2022-4-24 00:31
bjay2008xmy 发表于 2022-4-23 21:36
SMSS的代码简单高效,不过他把搜索的字符写错了,导致匹配不上。经过简单修改,可以正常运行。
@Echo off& ...

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

另外,
1. 我觉的 call 是多余的.
2. T%%n%% 写法复杂,用 T!n! 就可以了.
作者: plusv    时间: 2022-4-24 00:38
bjay2008xmy 发表于 2022-4-23 21:50
再经修改版:可以去除IP地址后面带的"(首选)"
@Echo off&SetLocal EnableDelayedExpansion&set n=0
for ...

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

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



作者: bjay2008xmy    时间: 2022-4-24 01:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: plusv    时间: 2022-4-24 01:15
本帖最后由 plusv 于 2022-4-24 01:28 编辑
bjay2008xmy 发表于 2022-4-24 01:13
咱也不懂,就是学习一下。你这个是自己改的,具体是怎么写的?

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





作者: bjay2008xmy    时间: 2022-4-24 12:24
提示: 作者被禁止或删除 内容自动屏蔽
作者: 窄口牛    时间: 2022-4-24 12:52
都不是问题,问题是只单连接有用。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3