如何使用以下 Bat 文件提取 IPv4

How to Extract IPv4 with following Bat File

我正在尝试找到从网络服务器中提取以下 IP 地址的正确方法,但我无法 return 仅提取 IP 地址。

理论上,如果我有一个 1111s1 作为服务器,我应该能够获取一个 IP 地址,但我仍然没有收到答复。有人可以帮我弄清楚这部分吗?我对变量概念还是陌生的。


@echo off
:SETUP_PRINTER
cls
mode con: cols=65 lines=30
echo.
echo --------------------------
echo.     Printer Setup
echo --------------------------
set /p SPrnt=Name of Place:
echo.
FOR /F "tokens=2,3" %%A IN ('ping "%SPrnt%s1" -n 1 -4') DO IF "from"=="%%A" set "IP=%%~B"
echo. %IP%
echo. 
echo.  Printer IPs:
echo.
echo.  .30 - Test       .37 - Test
echo.  .31 - Test       .38 - Test
echo.  .32 - Test       .39 - Test
echo.  .33 - Test       .40 - Test
echo.  .34 - Test       .41 - Test
echo.  .35 - Test       .42 - Test
echo.  .36 - Test       .43 - Test
echo.  .23 - Test       .61 - Test
echo.  .24 - Test
echo.
pause
goto MAINMENU

从DNS解析获取地址而不是"reply from"

for /f "tokens=2 delims=[]" %%a in ('ping -n 1 -4 "%SPrnt%s1"') do @echo %%a

如果你 ping 一个主机名,你会得到类似这样的东西:

Ping wird ausgeführt für hostname [192.168.100.153] mit 32 Bytes Daten:

(语言可能会改变,但语法 ..... [aaa.bbb.ccc.ddd] ..... 始终相同)

for /f 循环获取第二个标记(由于分隔符,第一个标记是 [ 之前的任何内容,第二个标记是 [] 内的任何内容,第三个标记是 ]) 之后的任何内容,因此第二个标记正是所需的 IP 地址。

有关详细信息,请参阅 for /f

您可能需要使用 NSLookUp 而不是 Ping:

For /F "Skip=1 Tokens=2" %%A In ('NSLookUp 1111s1 2^>Nul'
) Do If Not Defined IP Set "IP=%%A"