2013-12-06 1 views
1

Я пытаюсь назначить переменную на основе ее значения переменной цикла, так что в конце цикла я могу выделить каждый результат в одной строке. Общая команда - это nslookup с несколькими запрошенными серверами. Я хватаю начало результата имени (до первой точки), чтобы отобразить результаты на основе 5-секундных задержек. Я оставил во второй версии команды, которую я тоже пробовал, но remed. Я не могу заставить цель заполнять и эхо.Использовать переменную цикла как часть новой переменной в пакетном сценарии Windows

setlocal enabledelayedexpansion 

For %%s IN (111.111.0.2, 111.111.0.3, 111.111.9.2, 111.111.9.3) do (

for /L %%l IN (1,1,5) DO (

set Target=%e%%l.testedge.test.tld% 

for /f "tokens=2 delims=:." %%G IN ('nslookup e%%l.testedge.test.tld %%s ^|find "Name:"') do set %Result%%l%=%%G 

REM set Result%%l=%for /f "tokens=2 delims=:." %%G IN ('nslookup e%%l.testedge.test.tld %%s ^|find "Name:"') do echo %%G% 

REM for /f "tokens=2 delims=:." %%G IN ('nslookup e%%l.testedge.test.tld %%s ^|find "Name:"') do set !Result%%1!=%%G 

ping 1.1.1.1 -n 1 -w 5000 > nul 

) 

echo %%s,%Target%,%Result1%,%Result2%,%Result3%,%Result4%,%Result5% 
) 

Результаты выглядят как его прокси-сервера

Name: e1.testedge.test.tld 
Name: user-data.e1.testedge.test.tld 
Name: user-data.e1.testedge.test.tld 

Так цикл захватывает e1, пользовательские данные и пользовательские данные. Мне нужно назначить им постоянную переменную для эха в конце цикла. Я планирую добавить к csv, чтобы мы могли открыть форму в виде электронных таблиц (поиск более 70 адресов через 20 серверов) для просмотра. Я хотел бы, чтобы выход был как

Nameserver Target    1st 2nd  3rd   4th  5th 
111.111.0.2,e1.testedge.test.tld,e1,user-data,user-data,user-data,user-data 
111.111.0.2,e2.testedge.test.tld,e2,user-data,user-data,user-data,user-data 
111.111.0.2,e3.testedge.test.tld,e3,user-data,user-data,user-data,user-data 
111.111.0.2,e4.testedge.test.tld,e4,user-data,user-data,user-data,user-data 
+0

ПРИМЕЧАНИЕ. Я изменил результаты nslookup, чтобы точно представить ситуацию. – user3071645

ответ

2

Я думаю, что это то, что вы пытаетесь.

@echo off 
setlocal enableextensions enabledelayedexpansion 

For %%s IN (111.111.0.2, 111.111.0.3, 111.111.9.2, 111.111.9.3) do (
    for /L %%l IN (1,1,5) DO (
     set "Target=e%%l.testedge.test.tld" 
     for /f "tokens=2 delims=:." %%G IN ('nslookup !Target! %%s ^|find "Name:"') do set "Result%%l=%%G" 
    ) 
    echo %%s,!Target!,!Result1!,!Result2!,!Result3!,!Result4!,!Result5! 
) 
Смежные вопросы