Si estás en la CLI, ¿por qué no usar un bucle FOR para "HACER" lo que quieras?
for /F "delims=" %a in ('dir') do @echo %a && echo %a >> output.txt
Gran recurso en Windows CMD para bucles: https://ss64.com/nt/for_cmd.html
La clave aquí es establecer los delimitadores (delimitaciones), que romperían cada línea de salida, a nada. De esta manera, no se romperá con el espacio en blanco predeterminado. El% a es una letra arbitraria, pero se usa en la sección "hacer" para, bueno ... hacer algo con los caracteres que se analizaron en cada línea. En este caso, podemos usar los símbolos de unión (&&) para ejecutar el segundo comando echo para crear o agregar (>>) a un archivo de nuestra elección. Es más seguro mantener este orden de comandos de OD en caso de que haya un problema al escribir el archivo, al menos primero conseguiremos el eco en la consola. El signo at (@) delante del primer eco evita que la consola muestre el comando echo en sí, y en su lugar solo muestra el resultado del comando que es mostrar los caracteres en% a. De lo contrario, verías:
echo El volumen en la unidad [x] es Windows El
volumen en la unidad [x] es Windows
ACTUALIZACIÓN: / F omite las líneas en blanco y la única solución es prefiltrar la salida agregando un carácter a cada línea (tal vez con números de línea a través del comando find). Resolver esto en CLI no es rápido ni bonito. Además, no incluí STDERR, así que aquí también estoy capturando errores:
for /F "delims=" %a in ('dir 2^>^&1') do @echo %a & echo %a >> output.txt
Redirigir mensajes de error
Los puntos (^) están ahí para escapar de los símbolos que están detrás de ellos, porque el comando es una cadena que se está interpretando, en lugar de decir, ingresándola directamente en la línea de comandos.