2017-02-13 14 views
1

Я пытаюсь найти правильный способ извлечь следующий IP-адрес с сетевого сервера, но я не могу вернуть только ip-адрес.Как извлечь IPv4 со следующим файлом Bat

Теоретически, если бы у меня был 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

+0

[не помещать изображения кода и вывода текста здесь] (http://meta.stackoverflow.com/q/303812/995714) , Скопируйте и вставьте их вместо –

ответ

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.

+0

Hi Stephan, Можете ли вы случайно объяснить процесс на вашем? Я все еще не понимаю, как это понятие. =) – Greg

0

Вам может понадобиться использовать NSLookUp вместо Ping:

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

дает мне IP-адрес сервера, а не моего реального ПК. – Stephan

+0

@Stephan, это именно то, что я читал как требование. IP-адрес, присвоенный принтеру/серверу с именем 1111s1. – Compo

+0

'nslookup' дает мне' Сервер', 'Адрес',' Имя', 'Адрес'. Ваш метод сообщает о первом адресе (сервере), но нам нужен адрес 'Name' (данный Hostname) – Stephan