无忧启动论坛

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

[分享] 分享个获取有线网卡本地连接内网IP、子网掩码、网关的批处理

    [复制链接]
跳转到指定楼层
1#
发表于 2020-1-16 14:11:31 | 显示全部楼层 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 liuzhaoyzz 于 2022-10-9 10:48 编辑

两个方案保底,一个不行自动用另一个,如果系统中精简了findstr命令,尝试用find命令。未测试一个网卡绑定多个ip的情况。

edit:已更换为plusv方案,感谢分享 获取 内网 IP、子网掩码、网关的 EXE 文件 - 脚本讨论区 - 无忧启动论坛 - Powered by Discuz! http://wuyou.net/forum.php?mod=viewthread&tid=418506

@echo off & setlocal enabledelayedexpansion
rem 获取ip、网关、子网掩码:
rem 如果系统中有route命令,优先采用方案1:
for /f "tokens=3,4" %%a in ('route print^|findstr /RC:"0.0.0.0          0.0.0.0.*0$"') do (if not defined ip set "Gateway=%%a" & set "ip=%%b")
for /f "tokens=3,4" %%a in ('route print^|find "0.0.0.0          0.0.0.0"^|find " 10"') do (if not defined ip set "Gateway=%%a" & set "ip=%%b")
for /f "tokens=3,4" %%a in ('route print^|find "0.0.0.0          0.0.0.0"^|find " 20"') do (if not defined ip set "Gateway=%%a" & set "ip=%%b")
for /f "tokens=2" %%a in ('route print^|findstr "在链路上.*%ip%"') do (if not defined mask set "mask=%%a" )
for /f "tokens=2" %%a in ('route print^|find "在链路上    %ip%"') do (if not defined mask set "mask=%%a" )

rem 如果系统中没有route命令,就采用方案2:
if defined ip goto :next
for /f "delims=[]" %%a in ('ipconfig^|find /n "以太网:"') do  if not defined n1 set /a n1=%%a+3
for /f "delims=[]" %%a in ('ipconfig^|find /n "本地连接:"') do  if not defined n1 set /a n1=%%a+3
set /a n2=%n1%+1
set /a n3=%n1%+2
for /f "skip=%n1%  tokens=2 delims=:" %%a in ('ipconfig') do  if not defined ip set ip=%%a
for /f "skip=%n2%  tokens=2 delims=:" %%a in ('ipconfig') do  if not defined mask set mask=%%a
for /f "skip=%n3%  tokens=2 delims=:" %%a in ('ipconfig') do  if not defined Gateway set Gateway=%%a
set ip=%ip: =%
set mask=%mask: =%
set Gateway=%Gateway: =%

:next
echo IP地址是:%ip%
rem for /f "tokens=1,2,3 delims=." %%a in ("%ip%") do  (if not defined IP_Pool set IP_Pool=%%a.%%b.%%c.2)
rem echo IP起始地址是:%IP_Pool%
echo 子网掩码是:%mask%
echo 网关是:%Gateway%
pause
exit /b



QQ截图20200116141042.jpg (18.3 KB, 下载次数: 115)

QQ截图20200116141042.jpg

NicInfo_Update_6-plusv.rar

42.65 KB, 下载次数: 175, 下载积分: 无忧币 -2

评分

参与人数 2无忧币 +6 收起 理由
studyggm + 1 赞一个!
有阴也有阳 + 5 很给力!

查看全部评分

2#
 楼主| 发表于 2020-1-16 15:04:57 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-1-16 15:35 编辑

ipconfig命令,不同的系统关键词不同啊,比如有的叫做本地连接,有的可能被改名字了,route方案用的关键字有个“在链路上”,比“本地连接”改名字的稍微好点。“本地连接”不同的系统,名字不同,WIN7叫做“本地连接:”,WIN10似乎叫做“以太网:”,有点乱。

点评

那个无所谓吧,我们要的主要是值,前面显示友好度差点也没关系  详情 回复 发表于 2020-1-16 20:08
已改正。  发表于 2020-1-16 15:36
反了~  详情 回复 发表于 2020-1-16 15:34
回复

使用道具 举报

3#
 楼主| 发表于 2020-1-16 15:05:31 | 显示全部楼层

我没想着获取dns,你写的批处理有吗?
回复

使用道具 举报

4#
 楼主| 发表于 2020-1-16 15:33:12 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-1-16 15:36 编辑
2010sya 发表于 2020-1-16 15:30
不错,挺好用的,能否自动导出为txt文件?

可以啊。添加几句:
echo IP地址是:%ip%>ip.txt
echo 子网掩码是:%mask%>>ip.txt
echo 网关是:%Gateway%>>ip.txt

点评

好的,谢谢!  详情 回复 发表于 2020-1-16 15:40
回复

使用道具 举报

5#
 楼主| 发表于 2020-1-16 16:53:31 | 显示全部楼层
窄口牛 发表于 2020-1-16 16:50
早先发过,最后定稿为获取外网IP,然后获取路由通路,选择第一个网关,然后在ipconfig里数行数获取IP及其余 ...

地址是什么?我看看
回复

使用道具 举报

6#
 楼主| 发表于 2020-1-16 17:39:33 来自手机 | 显示全部楼层
你那个就挺好啊。我主要是想获取内网ip 掩码 网关,用于设置pxe启动的参数用的。没考虑外网和dns,计算机名字什么的。
回复

使用道具 举报

7#
 楼主| 发表于 2020-1-16 21:45:45 来自手机 | 显示全部楼层
yigeren 发表于 2020-1-16 19:28
这个脚本在PE系统中使用,不能获取目标系统(C盘)的本地连接信息吧

不能获取另一个系统的,只能获取当前系统(可能是windows/pe)的

点评

记得本坛有个现成的工具,GUI界面的  详情 回复 发表于 2020-1-16 23:13
回复

使用道具 举报

8#
 楼主| 发表于 2020-1-16 21:48:05 来自手机 | 显示全部楼层
saiz 发表于 2020-1-16 20:40
用這個比較好...
http://wuyou.net/forum.php?mod=viewthread&tid=335152
直接抓登錄檔記錄

我要的是抓取当前系统下的ip 掩码啊,用来配置pxe的

点评

它可以啊!!! 它可以啊!!! 它可以啊!!!  详情 回复 发表于 2020-1-17 19:32
它可以啊!!!  详情 回复 发表于 2020-1-17 19:32
回复

使用道具 举报

9#
 楼主| 发表于 2020-1-16 21:49:05 来自手机 | 显示全部楼层
邪恶海盗 发表于 2020-1-16 20:08
那个无所谓吧,我们要的主要是值,前面显示友好度差点也没关系

关键字不对的话,抓取的值不对撒
回复

使用道具 举报

10#
 楼主| 发表于 2020-1-17 08:08:45 | 显示全部楼层
nttwqz 发表于 2020-1-16 23:13
记得本坛有个现成的工具,GUI界面的

因为我使用的场景是批处理调用,取ip、掩码写配置文件用的,GUI版本能够输出结果吗?
回复

使用道具 举报

11#
 楼主| 发表于 2020-1-17 08:16:02 | 显示全部楼层
本帖最后由 liuzhaoyzz 于 2020-1-17 08:35 编辑
slore 发表于 2020-1-16 23:57
既然启用延缓环境变量,为什么不用?直接一次ipconfig处理完,而不是调用5次。

setlocal enabledelayedexpansion是习惯性加上去的。

chcp 437切换到英文显示,似乎有乱码啊?如果用Ethernet adapter作为关键字,似乎有很多结果,处理起来麻烦,不知道倒底哪个是需要的。


一次处理完似乎挺好的,的确有优化改进的空间,但我不知道具体怎么处理。

哦,发现个问题,似乎route print查询路由表,如果同时存在有线网卡和无线网卡都有ip的情况下,获取的值可能是对的,也可能不对,批处理要修改下才行。。。

点评

chcp 65001,不能显示网卡类型,[attachimg]409728[/attachimg] chcp936则可以显示网卡类型。 [attachimg]409729[/attachimg]  详情 回复 发表于 2020-1-17 08:40
65001试试。你适.配.器名字是中文了。  发表于 2020-1-17 08:35
回复

使用道具 举报

12#
 楼主| 发表于 2020-1-17 08:40:11 | 显示全部楼层
liuzhaoyzz 发表于 2020-1-17 08:16
setlocal enabledelayedexpansion是习惯性加上去的。

chcp 437切换到英文显示,似乎有乱码啊?如果用E ...

chcp 65001,不能显示网卡类型,我要提取的是有线网卡,看不出来

chcp936则可以显示网卡类型,显示有线网卡,无线网卡。


回复

使用道具 举报

13#
 楼主| 发表于 2020-1-17 11:17:03 | 显示全部楼层
是的,我比较懒散,不追求代码质量,能搞出来,对我来说就不错了。。。
回复

使用道具 举报

14#
 楼主| 发表于 2020-1-17 13:42:57 | 显示全部楼层
万能是不可能的,在一定条件、一定范围内使用还是可以的,比如简体中文下用,拿到繁体中文下或者英文版本下,就要做修改适配了,主要是改下查询的关键字。        
回复

使用道具 举报

15#
 楼主| 发表于 2020-1-18 00:19:45 来自手机 | 显示全部楼层
saiz 发表于 2020-1-17 19:32
它可以啊!!!
它可以啊!!!
它可以啊!!!

你分享的批处理似乎能够枚举所有的,我现在只想要有线网卡的怎么办?
回复

使用道具 举报

16#
 楼主| 发表于 2020-1-18 15:01:49 来自手机 | 显示全部楼层
窄口牛 发表于 2020-1-18 13:44
wmic可以筛选网卡类型。

        wmic依赖太多,组件依赖太多的不可靠,如果依赖wmic,不如用第三方的。有些pe根本不支持wmic。   
回复

使用道具 举报

17#
 楼主| 发表于 2020-2-8 08:48:07 来自手机 | 显示全部楼层
xiaoyouxi005 发表于 2020-2-7 15:56
想起前段时间单位里给每台电脑配置固定IP……

能否增加一个获取MAC地址?然后统一吧信息保存到一个txt中 ...

   前面几楼已经有人分享的有了吧?     
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-5 12:53

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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