Se você estiver na CLI, por que não usar um loop FOR para "FAZER" o que quiser:
for /F "delims=" %a in ('dir') do @echo %a && echo %a >> output.txt
Grande recurso no Windows CMD para loops: https://ss64.com/nt/for_cmd.html
A chave aqui é definir os delímetros (delims), que quebrariam cada linha de saída, para nada. Dessa forma, ele não quebrará o padrão de espaço em branco. O% a é uma letra arbitrária, mas é usada na seção "do" para, bem ... fazer algo com os caracteres que foram analisados em cada linha. Nesse caso, podemos usar o "e comercial" (&&) para executar o segundo comando echo para criar-ou-acrescentar (>>) a um arquivo de nossa escolha. Mais seguro para manter essa ordem de comandos DO, caso haja um problema ao escrever o arquivo, pelo menos obteremos o eco no console primeiro. O sinal de arroba (@) na frente do primeiro eco impede o console de mostrar o próprio comando echo e, em vez disso, apenas exibe o resultado do comando que deve exibir os caracteres em% a. Caso contrário, você verá:
eco Volume na unidade [x] é Windows
Volume na unidade [x] é Windows
UPDATE: / F ignora as linhas em branco e a única solução é pré-filtrar a saída, adicionando um caractere a cada linha (talvez com números de linha por meio do comando find). Resolver isso na CLI não é rápido ou bonito. Além disso, eu não incluí o STDERR, então aqui também está capturando erros:
for /F "delims=" %a in ('dir 2^>^&1') do @echo %a & echo %a >> output.txt
Redirecionando mensagens de erro
Os sinais de intercalação (^) estão lá para escapar dos símbolos após eles, porque o comando é uma sequência que está sendo interpretada, ao contrário de dizer, inserindo-a diretamente na linha de comando.