Escape> не работает во встроенной команде - PullRequest
0 голосов
/ 01 мая 2018

Я запускаю это на Windows 2003, (других вариантов нет) .

Возьмите следующий код:

@echo off
for /F "tokens=*" %%f in ('Dir /s /b E:\file 2^>nul') do (
    @echo %%f
)

Это рекурсивный поиск E: всех файлов с именем file. Затем он распечатывает совпадение, которое выглядит примерно так: E:\path\to\file.

Итак, Dir естественно печатает File Not Found после его поиска, это печатается на stderr.

Итак, я пытаюсь перенаправить stderr с помощью приведенного ниже (который находится в приведенной выше команде) :

2^>nul

^ экранирует >, так как команда Dir встроена. Тем не менее, я просто получаю ошибку, (несмотря на то, что это общее решение для многих) :

> was unexpected at this time

Я проверял это на Windows 7, и он отлично работает, поэтому я стараюсь заключить > в речевые метки, которые использовались в NT и ранее (насколько мне известно) для экранирования символов.

2">"nul

И это ведет себя так же, все еще выводя на stderr.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...