无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 12787|回复: 49

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

    [复制链接]
发表于 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

NicInfo_Update_6-plusv.rar

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

评分

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

查看全部评分

发表于 2020-1-16 14:24:10 | 显示全部楼层
还不错。。。。。。。。。。。
回复

使用道具 举报

发表于 2020-1-16 14:35:57 | 显示全部楼层
ipconfig命令不行么?

点评

ipconfig命令,不同的系统关键词不同啊,比如有的叫做本地连接,英文版本,哪里有什么“本地连接”关键字?繁体字呢?所以优先用route方案。  详情 回复 发表于 2020-1-16 15:04
回复

使用道具 举报

发表于 2020-1-16 14:43:23 来自手机 | 显示全部楼层
不含DNS?

点评

我没想着获取dns,你写的批处理有吗?  详情 回复 发表于 2020-1-16 15:05
回复

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

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

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

使用道具 举报

发表于 2020-1-16 15:30:12 | 显示全部楼层
不错,挺好用的,能否自动导出为txt文件?

点评

可以啊。修改下: echo IP地址是:%ip%>ip.txt echo 子网掩码是:%mask%>>ip.txt echo 网关是:%Gateway%>>ip.txt  详情 回复 发表于 2020-1-16 15:33
回复

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

发表于 2020-1-16 15:34:44 来自手机 | 显示全部楼层
liuzhaoyzz 发表于 2020-1-16 15:04
ipconfig命令,不同的系统关键词不同啊,比如有的叫做本地连接,有的可能被改名字了,route方案用的关键 ...

反了~
回复

使用道具 举报

发表于 2020-1-16 15:40:26 | 显示全部楼层
liuzhaoyzz 发表于 2020-1-16 15:33
可以啊。添加几句:
echo IP地址是:%ip%>ip.txt
echo 子网掩码是:%mask%>>ip.txt

好的,谢谢!
回复

使用道具 举报

发表于 2020-1-16 16:18:19 | 显示全部楼层
我都是ipconfig
回复

使用道具 举报

发表于 2020-1-16 16:50:56 | 显示全部楼层
早先发过,最后定稿为获取外网IP,然后获取路由通路,选择第一个网关,然后在ipconfig里数行数获取IP及其余的参数。

点评

地址是什么?我看看  详情 回复 发表于 2020-1-16 16:53
回复

使用道具 举报

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

地址是什么?我看看
回复

使用道具 举报

发表于 2020-1-16 17:00:25 来自手机 | 显示全部楼层
[url=http://bbs.wuyou.net/forum.php?mod=viewthread&tid=388972][/url]
你试试给精简一下,去掉第三方wget的依赖。
回复

使用道具 举报

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

使用道具 举报

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

点评

不能获取另一个系统的,只能获取当前系统(可能是windows/pe)的  详情 回复 发表于 2020-1-16 21:45
回复

使用道具 举报

发表于 2020-1-16 20:08:09 | 显示全部楼层
liuzhaoyzz 发表于 2020-1-16 15:04
ipconfig命令,不同的系统关键词不同啊,比如有的叫做本地连接,有的可能被改名字了,route方案用的关键 ...

那个无所谓吧,我们要的主要是值,前面显示友好度差点也没关系

点评

关键字不对的话,抓取的值不对撒  详情 回复 发表于 2020-1-16 21:49
回复

使用道具 举报

发表于 2020-1-16 20:40:50 | 显示全部楼层
用這個比較好...
http://wuyou.net/forum.php?mod=viewthread&tid=335152
直接抓登錄檔記錄
就算硬碟壞了 用PE也可以抓到資料

点评

我要的是抓取当前系统下的ip 掩码啊,用来配置pxe的  详情 回复 发表于 2020-1-16 21:48
回复

使用道具 举报

发表于 2020-1-16 20:41:19 | 显示全部楼层
用這個比較好...
http://wuyou.net/forum.php?mod=viewthread&tid=335152
直接抓登錄檔記錄
就算硬碟壞了 用PE也可以抓到資料
回复

使用道具 举报

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

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

点评

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

使用道具 举报

 楼主| 发表于 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
回复

使用道具 举报

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

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

使用道具 举报

发表于 2020-1-16 22:27:10 | 显示全部楼层
不错,很好,谢谢!
回复

使用道具 举报

发表于 2020-1-16 23:13:07 来自手机 | 显示全部楼层
liuzhaoyzz 发表于 2020-1-16 21:45
不能获取另一个系统的,只能获取当前系统(可能是windows/pe)的

记得本坛有个现成的工具,GUI界面的

点评

因为我使用的场景是批处理调用,取ip、掩码写配置文件用的,GUI版本能够输出结果吗?  详情 回复 发表于 2020-1-17 08:08
回复

使用道具 举报

发表于 2020-1-16 23:57:08 | 显示全部楼层
  1. setlocal enabledelayedexpansion
复制代码

既然启用延缓环境变量,为什么不用?直接一次ipconfig处理完,而不是调用5次。


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

  1. chcp 437
  2. ipconfig

  3. chcp 936
  4. echo 获取IP:
复制代码

点评

setlocal enabledelayedexpansion是习惯性加上去的。 chcp 437切换到英文显示,似乎有乱码啊? [attachimg]409727[/attachimg] 一次处理完似乎挺好的,的确有优化改进的空间,但我不知道具体怎么处理。  详情 回复 发表于 2020-1-17 08:16
回复

使用道具 举报

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

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

使用道具 举报

 楼主| 发表于 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作为关键字,似乎有很多结果,处理起来麻烦,不知道倒底哪个是需要的。
QQ截图20200117081129.jpg

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

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

点评

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

使用道具 举报

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

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

chcp 65001,不能显示网卡类型,我要提取的是有线网卡,看不出来
QQ截图20200117083919.jpg
chcp936则可以显示网卡类型,显示有线网卡,无线网卡。
QQ截图20200117083928.jpg

回复

使用道具 举报

发表于 2020-1-17 11:07:31 | 显示全部楼层
setlocal enabledelayedexpansion

利用好这个吧。批处理精华的就for和这个吧。
这2个掌握了,批处理代码结构,处理会很整洁直观。
回复

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-28 18:21

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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