Không, bạn không thể chuyển hướng thuần túy.
Nhưng với một số thủ thuật (như tee.bat ) bạn có thể.
Tôi cố gắng giải thích sự chuyển hướng một chút.
Bạn chuyển hướng một trong mười luồng với > tệp hoặc <tệp
Nó không quan trọng, nếu chuyển hướng là trước hoặc sau lệnh, vì vậy hai dòng này gần giống nhau.
dir > file.txt
> file.txt dir
Chuyển hướng trong ví dụ này chỉ là một phím tắt cho 1> , điều này có nghĩa là luồng 1 (STDOUT) sẽ được chuyển hướng.
Vì vậy, bạn có thể chuyển hướng bất kỳ luồng nào bằng cách thêm số như 2> err.txt và nó cũng được phép chuyển hướng nhiều luồng trong một dòng.
dir 1> files.txt 2> err.txt 3> nothing.txt
Trong ví dụ này, "đầu ra tiêu chuẩn" sẽ đi vào files.txt, tất cả các lỗi sẽ ở err.txt và stream3 sẽ chuyển sang nothing.txt (DIR không sử dụng luồng 3).
Stream0 là STDIN
Stream1 là STDOUT
Stream2 là STDERR
Stream3-9 không được sử dụng
Nhưng điều gì xảy ra nếu bạn cố gắng chuyển hướng cùng một luồng nhiều lần?
dir > files.txt > two.txt
"Chỉ có thể có một", và nó luôn luôn là cái cuối cùng!
Vì vậy, nó bằng với dir> hai.txt
Ok, có một khả năng bổ sung, chuyển hướng một luồng sang luồng khác.
dir 1>files.txt 2>&1
2> & 1 chuyển hướng stream2 sang stream1 và 1> files.txt chuyển hướng tất cả sang files.txt .
Thứ tự là quan trọng ở đây!
dir ... 1>nul 2>&1
dir ... 2>&1 1>nul
là khác nhau Dòng đầu tiên chuyển hướng tất cả (STDOUT và STDERR) sang NUL,
nhưng dòng thứ hai chuyển hướng STDOUT sang NUL và STDERR thành STDOUT "trống".
Như một kết luận, rõ ràng là tại sao các ví dụ về Otávio Décio và andynormancx không thể hoạt động.
command > file >&1
dir > file.txt >&2
Cả hai đều cố gắng chuyển hướng stream1 hai lần, nhưng "Chỉ có thể có một" và đó luôn là lần cuối cùng.
Vì vậy, bạn nhận được
command 1>&1
dir 1>&2
Và trong mẫu đầu tiên chuyển hướng của stream1 sang stream1 không được phép (và không hữu ích lắm).
Hy vọng nó giúp.