无忧启动论坛

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

作者: liuzhaoyzz    时间: 2020-1-16 14:11
标题: 分享个获取有线网卡本地连接内网IP、子网掩码、网关的批处理
本帖最后由 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


作者: hero158    时间: 2020-1-16 14:24
还不错。。。。。。。。。。。
作者: 邪恶海盗    时间: 2020-1-16 14:35
ipconfig命令不行么?
作者: nttwqz    时间: 2020-1-16 14:43
不含DNS?
作者: liuzhaoyzz    时间: 2020-1-16 15:04
本帖最后由 liuzhaoyzz 于 2020-1-16 15:35 编辑
邪恶海盗 发表于 2020-1-16 14:35
ipconfig命令不行么?

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

作者: liuzhaoyzz    时间: 2020-1-16 15:05
nttwqz 发表于 2020-1-16 14:43
不含DNS?

我没想着获取dns,你写的批处理有吗?
作者: 2010sya    时间: 2020-1-16 15:30
不错,挺好用的,能否自动导出为txt文件?
作者: liuzhaoyzz    时间: 2020-1-16 15:33
本帖最后由 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

作者: nttwqz    时间: 2020-1-16 15:34
liuzhaoyzz 发表于 2020-1-16 15:04
ipconfig命令,不同的系统关键词不同啊,比如有的叫做本地连接,有的可能被改名字了,route方案用的关键 ...

反了~
作者: 2010sya    时间: 2020-1-16 15:40
liuzhaoyzz 发表于 2020-1-16 15:33
可以啊。添加几句:
echo IP地址是:%ip%>ip.txt
echo 子网掩码是:%mask%>>ip.txt

好的,谢谢!
作者: 2012andyle113    时间: 2020-1-16 16:18
我都是ipconfig
作者: 窄口牛    时间: 2020-1-16 16:50
早先发过,最后定稿为获取外网IP,然后获取路由通路,选择第一个网关,然后在ipconfig里数行数获取IP及其余的参数。
作者: liuzhaoyzz    时间: 2020-1-16 16:53
窄口牛 发表于 2020-1-16 16:50
早先发过,最后定稿为获取外网IP,然后获取路由通路,选择第一个网关,然后在ipconfig里数行数获取IP及其余 ...

地址是什么?我看看
作者: 窄口牛    时间: 2020-1-16 17:00
[url=http://bbs.wuyou.net/forum.php?mod=viewthread&tid=388972][/url]
你试试给精简一下,去掉第三方wget的依赖。
作者: liuzhaoyzz    时间: 2020-1-16 17:39
你那个就挺好啊。我主要是想获取内网ip 掩码 网关,用于设置pxe启动的参数用的。没考虑外网和dns,计算机名字什么的。
作者: yigeren    时间: 2020-1-16 19:28
这个脚本在PE系统中使用,不能获取目标系统(C盘)的本地连接信息吧
作者: 邪恶海盗    时间: 2020-1-16 20:08
liuzhaoyzz 发表于 2020-1-16 15:04
ipconfig命令,不同的系统关键词不同啊,比如有的叫做本地连接,有的可能被改名字了,route方案用的关键 ...

那个无所谓吧,我们要的主要是值,前面显示友好度差点也没关系
作者: saiz    时间: 2020-1-16 20:40
用這個比較好...
http://wuyou.net/forum.php?mod=viewthread&tid=335152
直接抓登錄檔記錄
就算硬碟壞了 用PE也可以抓到資料
作者: saiz    时间: 2020-1-16 20:41
用這個比較好...
http://wuyou.net/forum.php?mod=viewthread&tid=335152
直接抓登錄檔記錄
就算硬碟壞了 用PE也可以抓到資料
作者: liuzhaoyzz    时间: 2020-1-16 21:45
yigeren 发表于 2020-1-16 19:28
这个脚本在PE系统中使用,不能获取目标系统(C盘)的本地连接信息吧

不能获取另一个系统的,只能获取当前系统(可能是windows/pe)的
作者: liuzhaoyzz    时间: 2020-1-16 21:48
saiz 发表于 2020-1-16 20:40
用這個比較好...
http://wuyou.net/forum.php?mod=viewthread&tid=335152
直接抓登錄檔記錄

我要的是抓取当前系统下的ip 掩码啊,用来配置pxe的
作者: liuzhaoyzz    时间: 2020-1-16 21:49
邪恶海盗 发表于 2020-1-16 20:08
那个无所谓吧,我们要的主要是值,前面显示友好度差点也没关系

关键字不对的话,抓取的值不对撒
作者: lianmeng    时间: 2020-1-16 22:27
不错,很好,谢谢!
作者: nttwqz    时间: 2020-1-16 23:13
liuzhaoyzz 发表于 2020-1-16 21:45
不能获取另一个系统的,只能获取当前系统(可能是windows/pe)的

记得本坛有个现成的工具,GUI界面的
作者: slore    时间: 2020-1-16 23:57
  1. setlocal enabledelayedexpansion
复制代码

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


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

  1. chcp 437
  2. ipconfig

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

作者: liuzhaoyzz    时间: 2020-1-17 08:08
nttwqz 发表于 2020-1-16 23:13
记得本坛有个现成的工具,GUI界面的

因为我使用的场景是批处理调用,取ip、掩码写配置文件用的,GUI版本能够输出结果吗?
作者: liuzhaoyzz    时间: 2020-1-17 08:16
本帖最后由 liuzhaoyzz 于 2020-1-17 08:35 编辑
slore 发表于 2020-1-16 23:57
既然启用延缓环境变量,为什么不用?直接一次ipconfig处理完,而不是调用5次。

setlocal enabledelayedexpansion是习惯性加上去的。

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


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

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

作者: liuzhaoyzz    时间: 2020-1-17 08:40
liuzhaoyzz 发表于 2020-1-17 08:16
setlocal enabledelayedexpansion是习惯性加上去的。

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

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

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



作者: slore    时间: 2020-1-17 11:07
setlocal enabledelayedexpansion

利用好这个吧。批处理精华的就for和这个吧。
这2个掌握了,批处理代码结构,处理会很整洁直观。
作者: liuzhaoyzz    时间: 2020-1-17 11:17
是的,我比较懒散,不追求代码质量,能搞出来,对我来说就不错了。。。
作者: 江南一根葱    时间: 2020-1-17 12:49
有没有想过根据厂商mac地址确定网卡,好像以前用批处理提取ip地址怎么弄都不靠谱,不可能万能
win的api也烂
作者: liuzhaoyzz    时间: 2020-1-17 13:42
万能是不可能的,在一定条件、一定范围内使用还是可以的,比如简体中文下用,拿到繁体中文下或者英文版本下,就要做修改适配了,主要是改下查询的关键字。        
作者: saiz    时间: 2020-1-17 19:32
liuzhaoyzz 发表于 2020-1-16 21:48
我要的是抓取当前系统下的ip 掩码啊,用来配置pxe的

它可以啊!!!
作者: saiz    时间: 2020-1-17 19:32
liuzhaoyzz 发表于 2020-1-16 21:48
我要的是抓取当前系统下的ip 掩码啊,用来配置pxe的

它可以啊!!!
它可以啊!!!
它可以啊!!!
作者: liuzhaoyzz    时间: 2020-1-18 00:19
saiz 发表于 2020-1-17 19:32
它可以啊!!!
它可以啊!!!
它可以啊!!!

你分享的批处理似乎能够枚举所有的,我现在只想要有线网卡的怎么办?
作者: saiz    时间: 2020-1-18 10:10
那你就自己改成 只SHOW出有線網卡的 就好啦
作者: 窄口牛    时间: 2020-1-18 13:44
wmic可以筛选网卡类型。
作者: liuzhaoyzz    时间: 2020-1-18 15:01
窄口牛 发表于 2020-1-18 13:44
wmic可以筛选网卡类型。

        wmic依赖太多,组件依赖太多的不可靠,如果依赖wmic,不如用第三方的。有些pe根本不支持wmic。   
作者: xiaoyouxi005    时间: 2020-2-7 15:56
想起前段时间单位里给每台电脑配置固定IP……

能否增加一个获取MAC地址?然后统一吧信息保存到一个txt中?
作者: liuzhaoyzz    时间: 2020-2-8 08:48
xiaoyouxi005 发表于 2020-2-7 15:56
想起前段时间单位里给每台电脑配置固定IP……

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

   前面几楼已经有人分享的有了吧?     
作者: tfjzfoy    时间: 2020-2-8 11:44
谢谢楼主分享资源,收藏。这是个好东东。
作者: lisd70    时间: 2020-3-2 09:22
学习了,好方法
作者: cbl    时间: 2020-3-3 16:20

作者: MC阿虎    时间: 2020-3-4 09:02
感谢分享,嘿嘿




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3