CLI kullanıyorsanız, neden "DO" yapmak için bir FOR döngüsü kullanmıyorsunuz:
for /F "delims=" %a in ('dir') do @echo %a && echo %a >> output.txt
Döngüler için Windows CMD'de harika kaynak: https://ss64.com/nt/for_cmd.html
Buradaki anahtar, her çıkış hattını parçalayacak sınırlayıcıları (sınırlamaları) hiçbir şeye ayarlamamaktır. Bu şekilde varsayılan beyaz boşluktan etkilenmez. % A isteğe bağlı bir harftir, ancak "do" bölümünde her satırda ayrıştırılan karakterlerle bir şeyler yapmak için kullanılır. Bu durumda, seçtiğimiz bir dosyaya oluşturmak veya eklemek (>>) için 2. yankı komutunu çalıştırmak için ve işaretlerini (&&) kullanabiliriz. Dosyanın yazılmasında bir sorun olması durumunda bu DO komutlarının sırasını korumak daha güvenlidir, en azından ilk önce konsola yankıyı alırız. İlk yankının önündeki at işareti (@), konsolun echo komutunun kendisini göstermesini engeller ve bunun yerine yalnızca% a karakterlerini görüntüleyen komutun sonucunu görüntüler. Aksi takdirde şunu görürsünüz:
echo [x]
sürücüsündeki birim Windows [x] sürücüsündeki birim Windows
GÜNCELLEME: / F, boş satırları atlar ve yalnızca düzeltme, her satıra bir karakter ekleyerek çıktıyı önceden filtrelemektir (belki find komutuyla satır numaraları ile). Bunu CLI'de çözmek hızlı veya hoş değil. Ayrıca, STDERR'ı dahil etmedim, bu yüzden burada da hataları yakalama:
for /F "delims=" %a in ('dir 2^>^&1') do @echo %a & echo %a >> output.txt
Hata Mesajlarını Yeniden Yönlendirme
İşaretler (^) arkalarından sembollerden kaçmak için oradadır, çünkü komut, aksine komut satırına doğrudan girilen yorumlanan bir dizedir.