无忧启动论坛

 找回密码
 注册
搜索

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

查看数: 3719 | 评论数: 20 | 收藏 6
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-4-22 21:04

正文摘要:

比如我在CMD中运行了一个IPCONFIG /ALL命令会得到详细的网络配置,我想把主机名、MAC地址、IP地址、子网掩码、网关这几个特定的信息提取出来赋值给变量。谢谢

回复

窄口牛 发表于 2022-4-24 12:52:46
都不是问题,问题是只单连接有用。
bjay2008xmy 发表于 2022-4-24 12:24:36
提示: 作者被禁止或删除 内容自动屏蔽
plusv 发表于 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
bjay2008xmy 发表于 2022-4-24 01:13:31
提示: 作者被禁止或删除 内容自动屏蔽
plusv 发表于 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
plusv 发表于 2022-4-24 00:31:37
bjay2008xmy 发表于 2022-4-23 21:36
SMSS的代码简单高效,不过他把搜索的字符写错了,导致匹配不上。经过简单修改,可以正常运行。
@Echo off& ...

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

另外,
1. 我觉的 call 是多余的.
2. T%%n%% 写法复杂,用 T!n! 就可以了.
bjay2008xmy 发表于 2022-4-23 21:50:30
提示: 作者被禁止或删除 内容自动屏蔽
bjay2008xmy 发表于 2022-4-23 21:36:14
提示: 作者被禁止或删除 内容自动屏蔽
bjay2008xmy 发表于 2022-4-23 21:18:00
提示: 作者被禁止或删除 内容自动屏蔽
plusv 发表于 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
江南一根葱 发表于 2022-4-23 13:19:01
要配合findstr [0-9],,,
nttwqz 发表于 2022-4-23 11:16:29
bjay2008xmy 发表于 2022-4-23 11:01
我有一个简单的:
@echo off
ipconfig /all|find /I "主机名"

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

你看看10上面的默认网关、DNS是不是有空行开头的?肉眼看都能明白,但是命令不行,你这个明显过滤掉了,而且我这默认网关、DNS那行都是IPV6地址,这恐怕不是你想要的结果。
bjay2008xmy 发表于 2022-4-23 11:01:29
提示: 作者被禁止或删除 内容自动屏蔽
nttwqz 发表于 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
bjay2008xmy 发表于 2022-4-23 10:40:51
提示: 作者被禁止或删除 内容自动屏蔽
bjay2008xmy 发表于 2022-4-23 10:38:46
提示: 作者被禁止或删除 内容自动屏蔽
nttwqz 发表于 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
2013yang586 发表于 2022-4-22 21:56:04
好货收藏
smss 发表于 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 很给力!

查看全部评分

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

闽公网安备 35020302032614号

GMT+8, 2024-9-20 00:57

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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