Проверка переменной через bat

windows скрипт bat переменная batch

Всем доброго дня.

Есть задача по проверке состояния внесения записей в DNS и хотелось бы это автоматизировать.
Идея. Команда nslookup выводит отчет о работе в текстовый файл. Затем, батник забирает в переменную нужную строку (в моем случае, она 5) и сверяет с эталоном. Если изменение произошло, то выполняет одно действие (например выводит на экран ОК). Если изменений не произошло, то выводит на экран надпись NO.

Прошу Вас, о великие онлайновые духи, помочь разобраться. Вот то, что у меня сейчас и естественно, оно не работает.

@echo off

:dns-test
echo DNS Looking up. Please wait...
nslookup sdo.itsecurity.ru > ./nslookup.log
if exist ./nslookup.log (
for /F "skip=4 Delims=" %%I In (./nslookup.log) Do Set dns=%I
if exist %dns%="Address: <ip>" goto ok
echo NO
ping -n 3600 127.0.0.1
goto dns-test

:ok
cls
echo OK
pause

Помогите, очень надо. Скоро мне менять кучу записей. Также прошу не говорить про решения, аля sed, vi, vim, awk. Мне надо это реализовать именно батником. Подскажите, где именно ошибка и как ее исправить.

Примечание:
Ant1973, спасибо. Но теперь он не соблюдает условие. Т.е. если вы сейчас сделаете nslookup sdo.itsecurity.ru, то пятой строкой Address: 213.33.175.53. Но по условиям скрипта, он должен перейти в выполнение блока "ok", который очистит экран, выведет ОК и затем будет ожидать нажатия любой клавиши. Вместо этого он выводит NO и начинает пинговать. Почему такое может быть?
Надо, чтобы он писал NO и пинговал только в случае, если значение пятой строки иное.
Ответы:
А кто будет закрывать скобку после if?
if exist ./nslookup.log (
for /F "skip=4 Delims=" %%I In (./nslookup.log) Do Set dns=%%I
)
Ну, во-первых, Вы обратили внимание что в моем варианте стоит "%%I" вместо "%I"? :)
Во-вторых, сделал сейчас nsllokup, 5 строчкой оказалось "    timeout was 2 seconds.", а "Address:  82.198.190.196" — было седьмой строкой. :) Но это так, особенности рабочего интернета. :)
А вот то, что между "Address:" и собственно адресом находится не один, а два пробела — это существенно.
В-третьих, где Вы нашли такой синтаксис для проверки равенства строк?


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.