Nếu bạn đang sử dụng CLI, tại sao không sử dụng vòng lặp FOR để "LÀM" bất cứ điều gì bạn muốn:
for /F "delims=" %a in ('dir') do @echo %a && echo %a >> output.txt
Tài nguyên tuyệt vời trên Windows CMD cho các vòng lặp: https://ss64.com/nt/for_cmd.html
Chìa khóa ở đây là thiết lập các vạch đo (độ trễ), sẽ chia nhỏ từng dòng đầu ra, thành không có gì. Bằng cách này, nó sẽ không phá vỡ mặc định của khoảng trắng. % A là một chữ cái tùy ý, nhưng nó được sử dụng trong phần "làm" để ... làm gì đó với các ký tự được phân tích cú pháp ở mỗi dòng. Trong trường hợp này, chúng ta có thể sử dụng ký hiệu (&&) để thực thi lệnh echo thứ 2 để tạo hoặc nối thêm (>>) vào một tệp mà chúng ta chọn. An toàn hơn để giữ thứ tự các lệnh DO này trong trường hợp có vấn đề khi ghi tệp, ít nhất chúng ta sẽ nhận được tiếng vang đến bàn điều khiển trước. Dấu hiệu (@) phía trước tiếng vang đầu tiên ngăn không cho bảng điều khiển hiển thị lệnh echo và thay vào đó chỉ hiển thị kết quả của lệnh hiển thị các ký tự theo% a. Nếu không, bạn sẽ thấy:
echo Volume trong ổ đĩa [x] là Windows
Volume trong ổ đĩa [x] là Windows
CẬP NHẬT: / F bỏ qua các dòng trống và chỉ khắc phục là lọc trước đầu ra thêm một ký tự cho mỗi dòng (có thể với các số dòng thông qua lệnh tìm). Giải quyết vấn đề này trong CLI không nhanh hay đẹp. Ngoài ra, tôi cũng không bao gồm STDERR, vì vậy, đây cũng là lỗi bắt lỗi:
for /F "delims=" %a in ('dir 2^>^&1') do @echo %a & echo %a >> output.txt
Chuyển hướng thông báo lỗi
Các dấu mũ (^) ở đó để thoát khỏi các ký hiệu sau chúng, bởi vì lệnh là một chuỗi đang được giải thích, trái ngược với việc nói, nhập trực tiếp vào dòng lệnh.