2013-11-02 5 views
1

Вот моя проблема: я создал этот .bat-скрипт для отправки списка имен хостов в нашей среде. Все имена имеют аналогичное соглашение об именах, поэтому оно настраивается как type.site.countrycode (cc). Типы являются одинаковыми - tc1, tc2, tc3 и т. Д. Код места и страны вводится как переменные. Прямо сейчас, вы вводите сайт и cc, и он возвращает список типов и отображает, если они pingable или нет. Недавно я столкнулся с проблемами с DNS и не могу выполнить ping по FQDN, но могу выполнить ping с IP. Поэтому вместо того, чтобы возвращать IP для каждого, и THEN ping, я хочу, чтобы иметь возможность ping, а затем запустить nslookup на все, что установлено как вниз. Я пробовал все: от установки «вниз» в качестве переменной и запускать nslookup против переменной, я пробовал вложенный цикл, чтобы сделать это, а также findstr, чтобы найти «вниз», и установить их как переменную и так много других опций, из которых у меня заканчиваются идеи. Я собираюсь опубликовать код WORKING, просто пинговая коробки, и надеюсь, что любые методы, которые вы предлагаете, могут указать мне в правильном направлении. Заранее спасибо!!!.bat - Заполните ping и NSlookup в списке имен хостов и сообщите о результатах.

SET "site=%1" 
SET "cc=%2" 

if "%site%" equ "" (
    set /P "site=Site Number: " 
    set /P "cc=Country Code (US if left blank): " 
) 
if "%cc%"=="" set "cc=us" 
IF ERRORLEVEL 1 GOTO top 
:startloop 
set #=%site% 
:subloop 
set site=s0%site% 
:reping 
cls 
echo Checking %site%.%cc% 
echo. 

for %%i in (tc1 tc2 tc3) do (
ping -n 1 -w 2000 %%i.%site%.%cc% >nul && (echo %%i is up) || (echo %%i is down) 

) 

ответ

0

Может быть что-то вроде ...

for %%i in (tc1 tc2 tc3) do (
    ping -n 1 -w 2000 %%i.%site%.%cc% >nul && (echo %%i is up) || (nslookup %%i.%site%.%cc%) 

    ) 

?

Вы также мог бы пройти NSlookup команды в другой пакетном файл и запустить его после ... пинга -n 1 -w 2000 %% я.% Сайт%.% Куб.см%> NUL & & (эхо %% я вверх) || (nslookup %% i.% site%.% cc% >> nsbat.bat)