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 {:1_186:}好货收藏 个人感觉这个ipconfig /all的输出结果,对于for分析来说一点儿都不友好。
你需要考虑多个网卡的情况,一个网卡多个IP的情况,有无或多个默认网关的情况、有无或多个DNS的情况。
各种复杂的条件同样提升了分析命令输出的复杂性,不妨考虑wmic、netsh、ps、注册表等,也可以考虑第三方工具,本区就有。
翻了翻,我以前竟然写过通过其它方式实现的,注释说是支持单网卡多IP查询,你试试参考参考,暂时不打算完善。
bjay2008xmy 发表于 2022-4-23 10:40
这个不错,不过没能显示出正确的计算机名
{:1_185:}计算机名有现成的变量%computername%,或者也可以分析hostname的输出 bjay2008xmy 发表于 2022-4-23 11:01
我有一个简单的:
@echo off
ipconfig /all|find /I "主机名"
上面说了,你这考虑的情况太少,只在某些情况下才能正常工作。
你看看10上面的默认网关、DNS是不是有空行开头的?肉眼看都能明白,但是命令不行,你这个明显过滤掉了,而且我这默认网关、DNS那行都是IPV6地址,这恐怕不是你想要的结果。 要配合findstr ,,, bjay2008xmy 发表于 2022-4-23 10:38
这个在WIN7和WIN10上运行,不太可行.在WIN7上就显示ECHO处于打开状态。在WIN10上只显示出计算机名、子网 ...
smss 的方法虽然有小缺点 但简单高效,
我在 实机 测试 smss 的方法 Windows XP/7/10 通过.
bjay2008xmy 发表于 2022-4-23 21:36
SMSS的代码简单高效,不过他把搜索的字符写错了,导致匹配不上。经过简单修改,可以正常运行。
@Echo off& ...
有 方法 提供,
其它的就要自己 领悟.
另外,
1. 我觉的 call 是多余的.
2. T%%n%% 写法复杂,用 T!n! 就可以了. bjay2008xmy 发表于 2022-4-23 21:50
再经修改版:可以去除IP地址后面带的"(首选)"
@Echo off&SetLocal EnableDelayedExpansion&set n=0
for ...
不需要写 2 个 For,
只要在第 1 个 For 加入 2,3 排除 ( 就可以了
繁体中文 是 (
看你的发文 简体中文 好像是[
本帖最后由 plusv 于 2022-4-24 01:28 编辑
bjay2008xmy 发表于 2022-4-24 01:13
咱也不懂,就是学习一下。你这个是自己改的,具体是怎么写的?
不需要写 2 个 For,
只要在第 1 个 For 加入 2,3 排除 ( 就可以了
都不是问题,问题是只单连接有用。
页:
[1]