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

时间:2017-02-13 07:27:49

标签: batch-file for-loop extract ping ipv4

我正在尝试找到从网络服务器中提取以下IP地址的正确方法,但我无法仅返回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

Attempted Failure When Tested

2 个答案:

答案 0 :(得分:0)

从DNS解析中获取地址,而不是"从"

回复
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

答案 1 :(得分:0)

您可能需要使用NSLookUp代替Ping

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