O que faz "2>&1" num comando do Windows?

A fazer alguma manutenção num guião, encontrei esta linha:
ping -n 40 127.0.0.1 > NUL 2>&1

Eu sei a partir desta pergunta que tudo até à NUL faz o script dormir por 39 segundos. Mas não sei o que o resto do comando faz.

O que faz o 2>&1?

Author: Community, 2017-02-13

1 answers

A decompor a linha

ping -n 40 127.0.0.1

Envie 40 pacotes de ping para a máquina local. Se não houver nenhum problema, o comportamento padrão é esperar um segundo entre os pacotes, então ele gera um atraso de 39 segundos

>nul   or   1>nul

Redirecciona qualquer coisa escrita para o fluxo de saída padrão (fluxo número 1) para o dispositivo nul. Qualquer coisa enviada para este dispositivo é descartada. O efeito é que toda a saída normal do comando ping está escondida.

2>&1
Isto redirecciona tudo o que for escrito para o fluxo de erro padrão (fluxo número 2). Como no caso anterior, isto é feito para se esconder de saída (erros, neste caso), mas, em vez de diretamente a pedir para escrever para o nul dispositivo (que poderia ter feito 2>nul), esta sintaxe pedidos para enviar dados no fluxo de erro padrão para uma cópia do identificador utilizado no fluxo de saída padrão.
 2
Author: MC ND, 2017-02-13 19:19:17