我想从 ipconfig 获取 ipv4 192.168.1.*。我正在学习编写脚本,想制作一个输出值消息框,显示 ip 并将其复制到剪贴板。我已经使用注册表完成了此操作,但这是特定于计算机的,因为每台计算机的适配器都是唯一的。那么,如何让计算机使用 ipconfig 获取任何计算机的 192.168.1.*,并将其复制到剪贴板?
答案1
ipconfig /all|clip
第一部分是 ipconfig /all 命令。你已经知道这个了。接下来是一条垂直线|
,称为管道。它“管道“将其左边的命令的输出复制到另一个地方。clip
简单地说就是剪贴板。
请注意,并非每个本地 IP 都以 192.168 开头。。;像我这样的酷人使用10.0.0.*.
如果您只想要 IP 地址,而不是命令的其余输出,请查看此问题的可接受答案:如何从 ipconfig 的输出中提取 IPv4 IP 地址
我稍微编辑了该答案以使其满足您的要求:
@echo off
setlocal
setlocal enabledelayedexpansion
rem throw away everything except the IPv4 address line
for /f "usebackq tokens=*" %%a in (`ipconfig ^| findstr /i "ipv4"`) do (
rem we have for example "IPv4 Address. . . . . . . . . . . : 192.168.42.78"
rem split on : and get 2nd token
for /f delims^=^:^ tokens^=2 %%b in ('echo %%a') do (
rem we have " 192.168.42.78"
rem split on . and get 4 tokens (octets)
for /f "tokens=1-4 delims=." %%c in ("%%b") do (
set _o1=%%c
set _o2=%%d
set _o3=%%e
set _o4=%%f
rem strip leading space from first octet
set _4octet=!_o1:~1!.!_o2!.!_o3!.!_o4!
echo !_4octet!|clip
)
)
)
rem add additional commands here
endlocal
致谢:大卫·波斯蒂尔
将其复制到文本文件。将文件重命名为 whatever.bat。双击运行它。它是一个批处理文件。
答案2
只需打开命令提示符:
ipconfig /all。
然后使用命令的标记和复制功能。
然后复制,现在它就在剪贴板上。
显示屏幕截图。还有更多必要的内容 - 您只需复制 IP 地址即可
。
。
我将其粘贴到记事本中以显示结果。
自动配置已启用...: 是 链路本地 IPv6 地址...: IPv4 地址...: . . . . . . : 192.168......(首选) 子网掩码...: . . . . . . : 255.255.255.0 已获得租约...: . . . . : 2021 年 9 月 14 日,星期二,下午 1:20:05 租约到期...: . . . . . : 2021 年 9 月 15 日,星期三,下午 7:08:24 默认网关...: . . . . . : 192.168. DHCP 服务器... .. .. .. .. .. .. : 192.168. DHCPv6 IAID . . . . . . . . .. .. .. : 165980064 DHCPv6 客户端 DUID . . . . . . .. .. : 00-01-00-01-22-F6-47-43-54-EE-75-B2-63-DA DNS 服务器 . . . . . . . . . .. .. : 192.168. NetBIOS over Tcpip . . . . . . .. .. : 已启用
答案3
正如我之前在评论中所说的那样,您可以拥有多个本地 IP(版本 4),具体取决于您安装了多少个真实或虚拟网络适配器以及它们是否处于活动状态。
这是我制作的批处理|VBS混合,它显示适配器的IP地址,然后将其保存到剪贴板。
将代码复制到记事本并将其保存为扩展名为.bat 的文件...
@echo off
setLocal EnableDelayedExpansion
IF /i exist "MessageBox.vbs" del /q "MessageBox.vbs"
If /i exist "IP.tmp" del /q "IP.tmp"
set "Text1=x=msgbox^("Your local IPV4 Address has been copied to the clipboard:"^& vbCrLf ^& vbCrLf ^&"
For /f "skip=2 delims=" %%a in ('"wmic nicconfig where IPEnabled=True get Description,IPAddress /format:csv"') do for /f "tokens=2,3 delims=,;{" %%b in ("%%~a") do (
set /a Counter+=1
set IP[!Counter!]=%%b: %%c
)
for /L %%a in (1,1,%Counter%) do (
>>"IP.tmp" echo !IP[%%a]!
IF NoT %%a EQU %Counter% (set "Text2=!Text2!"!IP[%%a]!"^& vbCrLf &") else (set "Text2=!Text2!"!IP[%%a]!"^& vbCrLf")
)
>"MessageBox.vbs" echo %Text1%!Text2!,0, "Your Local IP Adresses"^)
type "IP.tmp" |clip
MessageBox.vbs
del /q Messagebox.vbs
del /q "IP.tmp"