如何将 IP 地址获取到批处理文件变量中? [英] How do I get the IP address into a batch-file variable?

查看:34
本文介绍了如何将 IP 地址获取到批处理文件变量中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个奇怪的问题,不确定是否可行.

I have an odd question, not sure if its possible.

我想编写一个脚本,例如我将使用 ipconfig 作为我的命令.

I'd like to write a script, and for example I'm going to use ipconfig as my command.

现在,当您正常运行此命令时,会有大量输出.

Now when you normally run this command theres a ton of output.

例如,我想要的是一个仅显示 IP 地址的脚本.

What I'd like to have is a script that would show only the IP address, for example.

echo Network Connection Test
ipconfig <---This would run in the background
echo Your IP Address is: (INSERT IP ADDRESS HERE)

输出为

Network Connection Test

Your IP Address is: 192.168.1.1

这甚至可能吗?

推荐答案

这将在 ipconfig 的输出中打印 IP 地址:

This will print the IP addresses in the output of ipconfig:

@echo off
set ip_address_string="IPv4 Address"
rem Uncomment the following line when using older versions of Windows without IPv6 support (by removing "rem")
rem set ip_address_string="IP Address"
echo Network Connection Test
for /f "usebackq tokens=2 delims=:" %%f in (`ipconfig ^| findstr /c:%ip_address_string%`) do echo Your IP Address is: %%f

要只打印第一个 IP 地址,只需在 echo 后添加 goto :eof(或跳转到的另一个标签而不是 :eof),或者在更多可读形式:

To only print the first IP address, just add goto :eof (or another label to jump to instead of :eof) after the echo, or in a more readable form:

set ip_address_string="IPv4 Address"
rem Uncomment the following line when using older versions of Windows without IPv6 support (by removing "rem")
rem set ip_address_string="IP Address"
for /f "usebackq tokens=2 delims=:" %%f in (`ipconfig ^| findstr /c:%ip_address_string%`) do (
    echo Your IP Address is: %%f
    goto :eof
)

一种更可配置的方法是实际解析 ipconfig/all 的输出,这样你甚至可以指定你想要的 IP 地址的适配器:

A more configurable way would be to actually parse the output of ipconfig /all a little bit, that way you can even specify the adapter whose IP address you want:

@echo off
setlocal enabledelayedexpansion
::just a sample adapter here:
set "adapter=Ethernet adapter VirtualBox Host-Only Network"
set adapterfound=false
echo Network Connection Test
for /f "usebackq tokens=1-2 delims=:" %%f in (`ipconfig /all`) do (
    set "item=%%f"
    if /i "!item!"=="!adapter!" (
        set adapterfound=true
    ) else if not "!item!"=="!item:IP Address=!" if "!adapterfound!"=="true" (
        echo Your IP Address is: %%g
        set adapterfound=false
    )
)

这篇关于如何将 IP 地址获取到批处理文件变量中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆