无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6638|回复: 67
打印 上一主题 下一主题

[原创] 【20230918】获取离线系统IP地址,兼容PE&桌面系统

    [复制链接]
跳转到指定楼层
1#
发表于 2023-9-15 15:22:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 BEIKING 于 2023-9-18 19:52 编辑
  1. @echo off
  2. if /i "%UserName%" == "SYSTEM" (Goto GotAdmin) else (reg query "HKLM\SYSTEM\ControlSet001\Control\MiniNT" 1>nul 2>nul&&Goto GotAdmin)
  3. :BatchGotAdmin
  4. Set _Args=%*
  5. if `%1` neq `` Set "_Args=%_Args:"=""%"
  6. if exist %WinDir%\System32\fltMC.exe fltMC 1>nul 2>nul||mshta VBScript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c """"%~f0"" %_Args%""",,"runas",1)(Window.Close) 2>nul&&Exit /b

  7. :GotAdmin
  8. Pushd "%CD%"&cd /d "%~dp0"
  9. Title 获取目标系统 IP&Color 2f
  10. MODE 1>nul 2>nul&&MODE con: Cols=42 Lines=11

  11. :Start
  12. setlocal enabledelayedexpansion
  13. if `%1` neq `` Set Input=%1&Goto Input
  14. Set n=0&for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist "%%i:\Windows\System32\Config\SOFTWARE" if exist "%%i:\Windows\System32\Config\SYSTEM" Set /a n+=1&Set dsk!n!=%%i
  15. if !n! equ 1 Set Input=!dsk%n%!&MODE 1>nul 2>nul&&MODE con: Cols=42 Lines=7&Goto Input
  16. if !n! geq 2 Set /a l=7+!n!*2&MODE 1>nul 2>nul&&MODE con: Cols=42 Lines=!l!
  17. Call :EchoX "e0.:选择您要查询的目标系统↓"
  18. for /l %%i in (1,1,!n!) do echo.&Call :EchoX "            " "9f::[%%i]" "  " "xx.:!dsk%%i!:\Windows"
  19. echo.&Call :EchoX "70::输入序号[" "74::默认1" "70::]"&Set n=1&Set /p n=:
  20. Set Input=!dsk%n%!&if not defined Input Set Input=!n!

  21. :Input
  22. Set Input=%Input:~0,1%
  23. if /i "%Input%:" neq "%SystemDrive%" (
  24.     for %%a in (SOFTWARE SYSTEM) do if not exist "%Input%:\Windows\System32\Config\%%a" Cls&Call :EchoX "cf.:找不到注册表文件!!"&echo "%Input%:\Windows\System32\Config\%%a"&Call :Delay 5 +&Exit
  25.     reg load HKLM\IP_SOF %Input%:\Windows\System32\Config\SOFTWARE 1>nul 2>nul
  26.     reg load HKLM\IP_SYS %Input%:\Windows\System32\Config\SYSTEM 1>nul 2>nul
  27.     Call :GetIPInfo IP_SOF IP_SYS
  28.     reg unload HKLM\IP_SOF 1>nul 2>nul
  29.     reg unload HKLM\IP_SYS 1>nul 2>nul
  30. ) else Call :GetIPInfo SOFTWARE SYSTEM
  31. if exist "%TEMP%\IPInfo.txt" (msg 1>nul 2>nul&&msg * /time 3600<"%TEMP%\IPInfo.txt"||@start "" "%TEMP%\IPInfo.txt")
  32. Call :Delay 2 +
  33. endlocal
  34. Exit

  35. :GetIPInfo
  36. Call :EchoX "e0.:正在查询中,请稍候。。。"
  37. for /f "tokens=1,2*" %%a in ('reg query "HKLM\%2\select" 2^>nul') do if /i "%%a" == "Default" Set /a x=%%c
  38. Set "v1=Microsoft\Windows NT\CurrentVersion\NetworkCards"
  39. Set "v2=ControlSet00%x%\Control\Network"
  40. Set "v3=ControlSet00%x%\services\Tcpip\Parameters"
  41. Set "s=EnableDHCP NameServer IPAddress SubnetMask DefaultGateway"
  42. Set "s=%s% DHCPNameServer DHCPIPAddress DHCPSubnetMask DHCPDefaultGateway"
  43. Set n=&for /f "delims=" %%a in ('reg query "HKLM\%1\%v1%" 2^>nul') do (
  44.     Set "v=%%a"
  45.     if "!v:%v1%\=!" neq "!v!" (
  46.         Set /a n+=1
  47.         for /f "tokens=1,2*" %%b in ('reg query "%%a" 2^>nul') do if /i "%%b" == "ServiceName" (Set "Guid!n!=%%d") else if /i "%%b" == "Description" Set "NetCard!n!=%%d"
  48.     )
  49. )
  50. if not defined n Call :EchoX "cf.:找不到网卡!!"&Call :Delay 5 +&Exit
  51. (for /f "tokens=1,2*" %%a in ('reg query "HKLM\%2\%v3%" 2^>nul') do (
  52.     if /i "%%a" == "Domain" (
  53.         if "%%c" neq "" (echo 域名名称:%%c) else echo 域名名称:
  54.     ) else if /i "%%a" == "HostName" echo 主机名称:%%c
  55. )) >"%TEMP%\IPInfo.txt"
  56. for %%a in (%s%) do Set "_%%a=1"
  57. (for /l %%a in (1 1 %n%) do (
  58.     echo.&echo 网卡名称:!NetCard%%a!
  59.     for %%b in (%s%) do Set "%%b="
  60.     Set flag=&for /f "delims=" %%b in ('reg query "HKLM\%2\%v2%" /s 2^>nul') do (
  61.         if defined flag (
  62.             for /f "tokens=1,2*" %%c in ("%%b") do if /i "%%c" == "Name" echo 连接名称:%%e& Set "flag="
  63.         ) else (
  64.             Set "v=%%b"
  65.             for %%c in ("\!Guid%%a!") do if "!v:%%~c=!" neq "!v!" Set flag=1
  66.         )
  67.     )
  68.     for /f "tokens=1,2*" %%b in ('reg query "HKLM\%2\%v3%\Interfaces\!Guid%%a!" 2^>nul') do if defined _%%b if "%%d" neq "" Set "v=%%d"&Set "%%b=!v:\0=        !"
  69.     if defined IPAddress (echo IP地址:!IPAddress!) else echo IP地址:!DHCPIPAddress!        [自动获取]
  70.     if defined SubnetMask (echo 子网掩码:!SubnetMask!) else echo 子网掩码:!DHCPSubnetMask!
  71.     if defined DefaultGateway (echo 默认网关:!DefaultGateway!) else echo 默认网关:!DHCPDefaultGateway!
  72.     if defined NameServer (Set DNS=!NameServer: =,!&Set dhcp=) else (Set DNS=!DHCPNameServer: =,!&Set dhcp=        [自动获取])
  73.     Set d=DNS 地址:&for %%i in (!DNS!) do if not defined "n%%a_%%i" echo !d!%%i!dhcp!&Set ""n%%a_%%i"=%%a"&Set dhcp=&Set d=     
  74. )) >>"%TEMP%\IPInfo.txt"
  75. Goto :eof

  76. :Delay :: 延迟操作 <%1=Sec|延迟秒数> [%2=+|显示倒计时]。
  77. if `%2` == `+` (Set n=2) else Set n=1
  78. if exist %WinDir%\System32\timeout.exe (timeout /t %1 %n%>nul) else if exist %WinDir%\System32\choice.exe (choice /t %1 /d y /n >nul) else ping 127.1 -n %1 >nul
  79. Goto :eof

  80. :EchoX :: 显示彩色文字 (不支持半角字符 \ / : * ? " < >|. % ! ~)。
  81. setlocal enabledelayedexpansion
  82. Set echox=EchoX.exe&&!echox! 1>nul 2>nul||(Set echox=&mkdir "%TEMP%\EchoX" 2>nul)
  83. for %%a in (%*) do (
  84.     Set "param=%%a"&Set "param=!param:"=!"
  85.     Set "color=!param:~0,2!"&(if not exist %WinDir%\System32\findstr.exe if not defined echox Set "color=xx")
  86.     Set n=0&(if "!param:~2,2!" == "::" Set n=1)&(if "!param:~2,2!" == ".:" Set n=2)
  87.     if !n! gtr 0 (
  88.         if /i "!color!" == "xx" (Set /p="_!param:~4!"<nul) else (Set param=%%~nxa&if defined echox (!echox! -c !color! -n "!param:~4!") else (Pushd "%TEMP%\EchoX" 2>nul&>"!param:~4!",Set /p= <nul&findstr /a:!color! .* "!param:~4!*"&del "!param:~4!"&Popd))
  89.         if !n! == 2 echo.
  90.     ) else if defined param Set /p="_!param!"<nul
  91. )
  92. endlocal
  93. Goto :eof
复制代码




批处理脚本用途
获取(离线和在线)Win系统主机:域名名称、主机名称、网卡信息(连接名称、IP地址、子网掩码、默认网关、DNS地址)

读取离线注册表IP信息方法非原创,借鉴的是无忧某位坛友分享的。
允许传参调用:   
    获取目标系统IP.bat C
    获取目标系统IP.bat D

【20230916】
1)释放临时文件到%TEMP%目录,避免因当前目录无写权限而报错。
2)格式化DNS地址输出并去重。

【20230918】
1)优化多系统选择体验,单一系统自动打开查询,多系统提供列表选择
2)支持网卡多IP设置查询

链接: https://pan.baidu.com/s/1tVJv4NWAY9bkzIy6VSHX_w 提取码: sad4



评分

参与人数 7无忧币 +33 收起 理由
Allreal + 5 很给力!
wh07027 + 5 很给力!
zhczf + 3 赞一个!
holley2008 + 5 很给力!
baosheng00 + 5 很给力!
cuicongyuan + 5 很给力!
freesoft00 + 5

查看全部评分

2#
发表于 2023-9-15 15:39:40 | 只看该作者
代码里面有特殊字符。。。
回复

使用道具 举报

3#
发表于 2023-9-15 15:57:07 | 只看该作者
感谢分享 一次成功
回复

使用道具 举报

4#
发表于 2023-9-15 16:24:55 | 只看该作者
这是个好东西,WIN10系统测试成功,PE系统提取不到

点评

这个应该可以吧,,你离线系统盘符输对了,就应该能取到  详情 回复 发表于 2023-9-15 16:46
回复

使用道具 举报

5#
 楼主| 发表于 2023-9-15 16:46:16 | 只看该作者
wszjf 发表于 2023-9-15 16:24
这是个好东西,WIN10系统测试成功,PE系统提取不到

这个应该可以吧,,你离线系统盘符输对了,就应该能取到
回复

使用道具 举报

6#
发表于 2023-9-15 17:01:36 | 只看该作者
本帖最后由 wszjf 于 2023-9-15 17:05 编辑
BEIKING 发表于 2023-9-15 16:46
这个应该可以吧,,你离线系统盘符输对了,就应该能取到

盘符是对的,也换过所有可能的盘符,微PE2.3

提示:找不到文件C:\IPInfo.txt

点评

测下最新的,代码更新到主贴了。  详情 回复 发表于 2023-9-16 15:40
晚上,我整理下发给你  详情 回复 发表于 2023-9-15 17:14
回复

使用道具 举报

7#
 楼主| 发表于 2023-9-15 17:14:34 | 只看该作者
wszjf 发表于 2023-9-15 17:01
盘符是对的,也换过所有可能的盘符,微PE2.3

提示:找不到文件C:\IPInfo.txt

晚上,我整理下发给你
回复

使用道具 举报

8#
发表于 2023-9-15 17:19:41 | 只看该作者
感谢分享
回复

使用道具 举报

9#
发表于 2023-9-15 17:52:55 | 只看该作者
BUG反馈:多个dns的 会有,或空格隔开,,单网卡多个IP的 会全部连在一起。

点评

已处理‘  详情 回复 发表于 2023-9-16 15:40
这注册表中存储的值就是这样,,批处理我看下能不能去重和优化下  详情 回复 发表于 2023-9-16 00:28
回复

使用道具 举报

10#
发表于 2023-9-15 17:57:55 来自手机 | 只看该作者
感谢大佬分享,学习了
回复

使用道具 举报

11#
发表于 2023-9-15 18:06:32 | 只看该作者
支持支持
回复

使用道具 举报

12#
发表于 2023-9-15 18:41:57 | 只看该作者
不错不错,还是比较有用的
回复

使用道具 举报

13#
发表于 2023-9-15 19:16:50 | 只看该作者
测试一下,谢谢分享
回复

使用道具 举报

14#
发表于 2023-9-15 19:26:25 | 只看该作者
谢谢分享
回复

使用道具 举报

15#
发表于 2023-9-15 19:49:46 | 只看该作者
谢谢分享
回复

使用道具 举报

16#
发表于 2023-9-15 20:44:40 | 只看该作者
测试一下,谢谢分享
回复

使用道具 举报

17#
发表于 2023-9-15 20:53:17 | 只看该作者
本帖最后由 2010sya 于 2023-9-15 20:59 编辑

http://bbs.wuyou.net/forum.php?m ... 0401&fromuid=373191
获取离线系统ip还是比较实用的!~!
在某些比较特殊的环境,比如ip-mac绑定,一旦系统崩溃又不知道ip的情况下,这就是个大问题!
我的想法是,怎么能够在这种情况下,获取ip并自动配置到pe系统下???
回复

使用道具 举报

18#
发表于 2023-9-16 00:06:15 | 只看该作者
谢谢分享!
回复

使用道具 举报

19#
 楼主| 发表于 2023-9-16 00:28:55 | 只看该作者
holley2008 发表于 2023-9-15 17:52
BUG反馈:多个dns的 会有,或空格隔开,,单网卡多个IP的 会全部连在一起。

这注册表中存储的值就是这样,,批处理我看下能不能去重和优化下

点评

已处理  详情 回复 发表于 2023-9-16 15:39
回复

使用道具 举报

20#
发表于 2023-9-16 05:15:29 | 只看该作者
谢谢分享
回复

使用道具 举报

21#
发表于 2023-9-16 09:48:43 | 只看该作者
BEIKING 发表于 2023-9-15 17:14
晚上,我整理下发给你

好的,谢谢
回复

使用道具 举报

22#
发表于 2023-9-16 11:06:44 | 只看该作者
感谢分享
回复

使用道具 举报

23#
发表于 2023-9-16 11:39:20 | 只看该作者
很有用,遇到系统崩溃了,只知道用其它不知不管的,不用再去翻离线注册表了
谢谢楼主分享
回复

使用道具 举报

24#
 楼主| 发表于 2023-9-16 15:39:38 | 只看该作者
BEIKING 发表于 2023-9-16 00:28
这注册表中存储的值就是这样,,批处理我看下能不能去重和优化下

已处理
回复

使用道具 举报

25#
 楼主| 发表于 2023-9-16 15:40:03 | 只看该作者
holley2008 发表于 2023-9-15 17:52
BUG反馈:多个dns的 会有,或空格隔开,,单网卡多个IP的 会全部连在一起。

已处理‘

点评

我获取的结果是这样? [attachimg]531852[/attachimg]  详情 回复 发表于 2023-9-18 12:03
回复

使用道具 举报

26#
 楼主| 发表于 2023-9-16 15:40:48 | 只看该作者
wszjf 发表于 2023-9-15 17:01
盘符是对的,也换过所有可能的盘符,微PE2.3

提示:找不到文件C:\IPInfo.txt

测下最新的,代码更新到主贴了。
回复

使用道具 举报

27#
发表于 2023-9-16 17:03:39 | 只看该作者
感谢分享
回复

使用道具 举报

28#
发表于 2023-9-16 21:45:49 | 只看该作者
BEIKING 发表于 2023-9-16 15:40
测下最新的,代码更新到主贴了。

非常感谢您的耐心回复,新的代码在PE系统还是提示找不到IPInfo.txt文件,经研究已经找到问题原因:

问题出在 :Start 标签下的这2行代码,第一行预测了可能出现的情况,默认使用msg 命令在新消息框显示IPInfo.txt的内容,如果 msg 命令执行失败,则使用默认关联的程序(记事本)打开IPInfo.txt文件,在我的PE系统下就出现了使用记事本打开文件IPInfo.txt的情况,但是在执行打开IPInfo.txt前已经执行完第二行删除IPInfo.txt的命令,所以就出现了提示找不到IPInfo.txt文件的问题。

我尝试把第2行代码删除或注释掉,在PE系统下测试成功了。

msg 1>nul 2>nul&&msg * /time 3600<"%TEMP%\IPInfo.txt"||@start "" "%TEMP%\IPInfo.txt"
Call :Delay 2&del /q "%TEMP%\IPInfo.txt" 1>nul 2>nul

点评

我明白了,我中间还延迟了2秒,才删临时文件。 没想到你的PE,2秒时间还没打开记事本  详情 回复 发表于 2023-9-16 21:57
回复

使用道具 举报

29#
 楼主| 发表于 2023-9-16 21:57:09 | 只看该作者
wszjf 发表于 2023-9-16 21:45
非常感谢您的耐心回复,新的代码在PE系统还是提示找不到IPInfo.txt文件,经研究已经找到问题原因:

问 ...

我明白了,我中间还延迟了2秒,才删临时文件。
没想到你的PE,2秒时间还没打开记事本
回复

使用道具 举报

30#
发表于 2023-9-16 22:13:36 | 只看该作者

感谢分享
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-24 22:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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