Пакетный файл: подавить вывод ошибок команды при использовании в цикле for - PullRequest
5 голосов
/ 24 августа 2011

Я перебираю вывод команды в цикле for. Рассмотрим следующий код:

for /F "tokens=1 delims=?=" %%A in ('set __variable') do ( set %%A= )

В основном я пытаюсь очистить значение каждой переменной среды, имя которой начинается с "__variable". Однако, если такая переменная не установлена, я получаю сообщение об ошибке «Переменная окружения __variable не определена», что не должно отображаться на моей консоли. Естественно, я бы изменил свой код следующим образом:

for /F "tokens=1 delims=?=" %%A in ('set __variable 2> NUL') do ( set %%A= )

Но теперь я получаю новую ошибку, которая говорит, что «2> было неожиданно в это время». или что-то в этом роде. Теперь я застрял; Есть ли способ для меня, чтобы выполнить мою задачу, не отображая стандартную ошибку на экране?

1 Ответ

12 голосов
/ 24 августа 2011

В Windows NT 4 и более поздних версиях вам понадобится экранировать символы канала и перенаправления, что делается путем добавления к ним префиксов (ˆ):

for /F "tokens=1 delims=?=" %A in ('set __variable 2^>NUL') do ( set %A= )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...