Назад | Перейти на главную страницу

FOR работает по запросу, но не в файле сценария?

В рамках задачи, над которой я работаю для клиента, мне нужно внести некоторые изменения в корпоративный сценарий входа в систему. Командная строка Windows определенно не является моей областью знаний, но с большей частью я справляюсь. Однако я сталкиваюсь со следующим непоследовательным поведением, которое я не могу понять.

Следующие команды:

Set TMP=
For /f "tokens=1,2,3 delims=:" %A in ('ipconfig ^| Find "Default Gateway" ^| Findstr/N "."') do (If not defined TMP  Set TMP=%~C)

При выполнении из командной строки (окно CMD.EXE в Windows 7) работайте должным образом, и для TMP устанавливается IP-адрес моего шлюза по умолчанию. Однако, если я выполню те же самые команды из файла CMD, в том же окне, происходит сбой со следующим выводом (Echo On):

>Set TMP=
~C) was unexpected at this time.

>For /f "tokens=1,2,3 delims=:" ~C)

Я пробовал как CALL, так и напрямую запускать скрипт. Я пробовал как с, так и без usebackq, а также со скобками и без скобок после DO, с одинаковыми результатами каждый раз: он работает в интерактивном режиме, но не из сценария в том же сеансе.

Что, черт возьми, здесь происходит и как я могу это исправить?

Вот часть help for вывод cmd:

To use the FOR command in a batch program, specify %%variable instead
of %variable.  Variable names are case sensitive, so %i is different
from %I.