Como LotPings diz em seu comentário e resposta, você sempre pode direcionar a saída para o console via >con
(note que o trailing :
não é necessário).
Mas nem todas as funcionalidades funcionam corretamente quando direcionadas para con
. Por exemplo, cls
não limpa corretamente a tela.
Outra opção é salvar uma cópia do stdout original antes de redirecionar para um arquivo e, em seguida, direcionar os comandos especiais para o manipulador salvo.
@echo off
9>&1 1>stdout.txt 2>stderr.txt (
echo Most output goes to a file
echo Hello world
>&9 echo But this goes to the original definition of stdout - the console
)
Observe que toda vez que você redireciona um identificador existente, a definição original é salva no primeiro identificador indefinido disponível antes que o redirecionamento seja executado. Portanto, supondo que não tenha havido nenhum redirecionamento anterior, o & 3 abaixo apontará para o stdout (console) original, portanto, não há necessidade de um salvamento explícito para 9.
@echo off
1>stdout.txt 2>stderr.txt (
echo Most output goes to a file
echo Hello world
>&3 echo But this normally goes to the original definition of stdout - the console
)
Mas eu não gosto de confiar no save implícito, porque não posso garantir que o 3 ainda não tenha sido usado, então talvez eu não consiga o resultado correto. Melhor salvar explicitamente em um identificador não usado especificado por você.