Якщо ви перебуваєте в CLI, чому б не використати цикл FOR, щоб "Зробити" все, що завгодно:
for /F "delims=" %a in ('dir') do @echo %a && echo %a >> output.txt
Чудовий ресурс Windows CMD для циклів: https://ss64.com/nt/for_cmd.html
Ключовим тут є встановлення деліметрів (розмежування), які розбивали б кожен рядок виводу нанівець. Таким чином, він не порушиться за замовчуванням пробілу. % A - це довільна літера, але вона використовується в розділі "do", щоб ... добре зробити щось з символами, які були проаналізовані в кожному рядку. У цьому випадку ми можемо використовувати ampersands (&&) для виконання другої команди echo для створення або додавання (>>) до обраного нами файлу. Безпечніше дотримуватися цього порядку команд DO у випадку, коли виникає проблема із записом файлу, ми, принаймні, спочатку отримаємо відлуння до консолі. Знак at (@) перед першим відлунням пригнічує показ консолі відображення самої команди echo, а замість цього просто відображає результат команди, яка повинна відображати символи у% a. Інакше ви побачите:
echo Volume in drive [x] is
Volume Windows in drive [x] is Windows
UPDATE: / F пропускає порожні рядки, і лише виправлення полягає в попередньому фільтруванні виводу, додаючи символ до кожного рядка (можливо, з номерами рядків за допомогою команди find). Вирішення цього в CLI не є швидким чи гарним. Крім того, я не включив STDERR, тому ось і помилки захоплення:
for /F "delims=" %a in ('dir 2^>^&1') do @echo %a & echo %a >> output.txt
Перенаправлення повідомлень про помилки
Carets (^) є для того, щоб уникнути символів після них, оскільки команда - це рядок, який інтерпретується, на противагу цьому, вводячи його безпосередньо в командному рядку.