Jeśli korzystasz z interfejsu CLI, skorzystaj z pętli FOR, aby „zrobić” cokolwiek chcesz:
for /F "delims=" %a in ('dir') do @echo %a && echo %a >> output.txt
Świetny zasób na Windows CMD dla pętli: https://ss64.com/nt/for_cmd.html
Kluczem tutaj jest ustawienie ograniczników (delimów), które zerwałyby każdą linię wyjścia, do zera. W ten sposób nie zepsuje się domyślnej białej spacji. % A to dowolna litera, ale jest używana w sekcji „do”, aby ... cóż ... zrobić coś ze znakami, które zostały przeanalizowane w każdym wierszu. W takim przypadku możemy użyć znaków ampersands (&&) do wykonania drugiego polecenia echa w celu utworzenia lub dołączenia (>>) do wybranego przez nas pliku. Bezpieczniej jest zachować tę kolejność poleceń DO na wypadek, gdyby wystąpił problem z zapisaniem pliku, przynajmniej dostaniemy echo do konsoli. Znak at (@) przed pierwszym echem powstrzymuje konsolę przed wyświetlaniem samego polecenia echo, a zamiast tego wyświetla wynik polecenia, które ma wyświetlać znaki w% a. W przeciwnym razie zobaczysz:
echo Wolumin na dysku [x] to Windows
Wolumin na dysku [x] to Windows
AKTUALIZACJA: / F pomija puste linie i jedyną poprawką jest wstępne filtrowanie wyniku, dodając znak do każdej linii (być może z numerami linii za pomocą polecenia find). Rozwiązanie tego w CLI nie jest szybkie ani ładne. Nie dodałem także STDERR, więc tutaj również są błędy:
for /F "delims=" %a in ('dir 2^>^&1') do @echo %a & echo %a >> output.txt
Przekierowywanie komunikatów o błędach
Kreski (^) służą do ucieczki przed symbolami po nich, ponieważ polecenie jest ciągiem, który jest interpretowany, w przeciwieństwie do tego, wprowadzając go bezpośrednio w wierszu polecenia.