2017-02-13 64 views
2

Выполнение некоторых работ по обслуживанию сценарий, я нашел эту строку:Что делает «2> & 1» в командной строке Windows?

ping -n 40 127.0.0.1 > NUL 2>&1 

Я знаю, что все from this question до NUL вызывает сценарий спать в течение 39 секунд. Но я не знаю, что делает остальная команда.

Что делает 2>&1?

+1

https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true "Чтобы перенаправить все выходные данные, включая дескриптор 2 (то есть , STDERR), из команды ipconfig для обработки 1 (то есть STDOUT), а затем перенаправить вывод в Output.log, введите ... " – ceejayoz

+0

' 2> 'перенаправляет вывод STDERR,' & 1' указывает параметр пакетного файла для использования для имени файла. – rcgldr

+0

Родственные: [порядок и положение операторов перенаправления cmd.exe] (http://stackoverflow.com/q/25559389) – aschipfl

ответ

2

Разбивая линии

ping -n 40 127.0.0.1 

Отправить 40 звона пакеты локального хоста. Если нет каких-либо проблем поведение по умолчанию ждать 1 секунды между пакетами, так что он генерирует 39 второй задержки

>nul or 1>nul 

перенаправляет все, что написано в стандартный выходной поток (поток № 1) к nul устройства. Все, что отправлено на это устройство, отбрасывается. Эффект заключается в том, что весь нормальный вывод команды ping скрыт.

2>&1 

Это перенаправляет все, что записано в стандартный поток ошибок (поток номер 2). Как и в предыдущем случае, это делается для того, чтобы скрыть вывод (ошибки в этом случае), но вместо прямого запроса на запись на устройство nul (мы могли бы сделать 2>nul), этот синтаксис запрашивает передачу данных в стандартный поток ошибок копию дескриптора, используемого в стандартном потоке вывода.