Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Передача переменной из цикла for (http://forum.oszone.net/showthread.php?t=213224)

Vilgelm 14-08-2011 13:13 1731495

Передача переменной из цикла for
 
Здравствуйте.

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

Код:

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 1731548

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 1731580

Foreigner Офигеть, спасибо огромное!


Время: 18:06.

Время: 18:06.
© OSzone.net 2001-