Извлечение IP из ping в переменную в скрипте bat
Есть ли в любом случае я мог бы сделать это?
@echo off
REM #Testing FIND in IPCONFIG
setlocal EnableDelayedExpansion
for /f "tokens=3" %%a in ('ping localhost ^| findstr /i "reply"') do (
set address=%%a
set address=!address::=!
)
ipconfig /all | findstr %address%
if ERRORLEVEL = 1 goto VIP_NOT_FOUND
REM #We are here becuase the find returned a result.
REM #It is safe to execute the rest of the application.
REM #EXECUTES THE SCRIPT HERE
echo "testing works" >> testing.txt
:VIP_NOT_FOUND
REM #This part of the script is where you would handle any
REM #error logging or other admin related
echo "Could not find a VIP. - Exiting"
echo "end of script reached."
Я запускаю этот скрипт на Windows Server версии 2k8 ENG. Кажется, он продолжает давать мне findstr: плохая командная строка. Но я не уверен, в чем проблема.
1 ответ
Решение
Примерно так должно работать:
@echo off
setlocal EnableDelayedExpansion
for /f "tokens=3" %%a in ('ping myhost.com ^| find /i "reply"') do (
set address=%%a
set address=!address:~0,-1!
)
ipconfig /all | findstr "%address%" >nul && (
rem Do stuff
)
Если на хосте есть IPv4, а также адреса IPv6, и вы ищете адрес IPv4, используйте ping -4
вместо просто ping
,