Войти

Показать полную графическую версию : [решено] Передача переменной из цикла for


Vilgelm
14-08-2011, 13:13
Здравствуйте.

Пишу небольшой батник. Вот "проблемная" часть кода:

route print 0.0.0.0 MASK 128* -4>>temp.txt //выводим таблицу маршрутов в файл
FINDSTR /c:"10." temp.txt>tmp.txt //ищем строку с нужным шлюзом
FOR /F "tokens=2,3* delims= " %%i in (tmp.txt) do @echo %%i %%j % >tmp1.txt //убираем лишние данные
FOR /F "tokens=2,3* delims= " %%i in (tmp1.txt) do @echo %%i %%j //присваиваем ip шлюза переменной j
route add 208.85.40.50 %%j //выполняем добавление маршрута со значением переменной j
route add 208.85.40.80 %%j
route add 208.85.40.20 %%j

До добавления маршрута все работает прекрасно (если сделать вывод FOR /F "tokens=2,3* delims= " %%i in (tmp1.txt) do @echo %%i %%j в txt, увидим нужный IP).
Однако дальше начинается какая-то ересь. Т.е. выполняется просто route add 208.85.40.50, без IP шлюза, что приводит к выводу справки. Короче, данные из переменной не подставляются. Думал, что вызываю ее неправильно, пробовал вызывать как %j - тогда пишет "Ошибка параметра" (выполняется команда route add 208.85.40.50 j). Пробовал как %j%, результат как и в первом случае.

Прошу помощи.

Заранее огромное спасибо!

Foreigner
14-08-2011, 14:47
Vilgelm,
А без временных файлов? Может так проще?

@echo off

for /f "tokens=3" %%i in ('route print 0.0.0.0 MASK 128* -4 ^| findstr "10\."') do (

route add 208.85.40.80 %%i

)

Vilgelm
14-08-2011, 15:27
Foreigner Офигеть, спасибо огромное!




© OSzone.net 2001-2012