bjay2008xmy 发表于 2022-4-22 21:04:10

smss 发表于 2022-4-22 21:29:36

@Echo off&SetLocal EnableDelayedExpansion&set n=0
for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|findstr /i "主机名 MAC地址 IP地址 子网掩码 网关"')do call set "T%%n%%=%%i"&set /a n+=1
for /l %%i in (0,1,4)do echo !T%%i!
pause

2013yang586 发表于 2022-4-22 21:56:04

{:1_186:}好货收藏

nttwqz 发表于 2022-4-22 22:14:03

个人感觉这个ipconfig /all的输出结果,对于for分析来说一点儿都不友好。

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

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


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


bjay2008xmy 发表于 2022-4-23 10:38:46

bjay2008xmy 发表于 2022-4-23 10:40:51

nttwqz 发表于 2022-4-23 10:44:21

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

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

bjay2008xmy 发表于 2022-4-23 11:01:29

nttwqz 发表于 2022-4-23 11:16:29

bjay2008xmy 发表于 2022-4-23 11:01
我有一个简单的:
@echo off
ipconfig /all|find /I "主机名"


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

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

江南一根葱 发表于 2022-4-23 13:19:01

要配合findstr ,,,

plusv 发表于 2022-4-23 20:21:50

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


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








bjay2008xmy 发表于 2022-4-23 21:15:49

bjay2008xmy 发表于 2022-4-23 21:18:00

bjay2008xmy 发表于 2022-4-23 21:36:14

bjay2008xmy 发表于 2022-4-23 21:50:30

plusv 发表于 2022-4-24 00:31:37

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

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

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

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 排除 ( 就可以了

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


bjay2008xmy 发表于 2022-4-24 01:13:31

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 排除 ( 就可以了




bjay2008xmy 发表于 2022-4-24 12:24:36

窄口牛 发表于 2022-4-24 12:52:46

都不是问题,问题是只单连接有用。
页: [1]
查看完整版本: 批处理FOR命令如何把特定的文本内容提取出来?