Tidak, Anda tidak bisa dengan pengalihan murni.
Tetapi dengan beberapa trik (seperti tee.bat ) Anda bisa.
Saya mencoba menjelaskan pengalihan sedikit.
Anda mengarahkan salah satu dari sepuluh aliran dengan > file atau <file
Itu tidak penting, jika pengalihan sebelum atau sesudah perintah, jadi kedua baris ini hampir sama.
dir > file.txt
> file.txt dir
Pengalihan dalam contoh ini hanya pintasan untuk 1> , ini berarti aliran 1 (STDOUT) akan dialihkan.
Jadi Anda dapat mengarahkan aliran apa pun dengan nomor sebelumnya seperti 2> err.txt dan juga diperbolehkan untuk mengarahkan beberapa aliran dalam satu baris.
dir 1> files.txt 2> err.txt 3> nothing.txt
Dalam contoh ini, "keluaran standar" akan masuk ke files.txt, semua kesalahan akan ada di err.txt dan stream3 akan masuk ke nothing.txt (DIR tidak menggunakan aliran 3).
Stream0 adalah STDIN
Stream1 adalah STDOUT
Stream2 adalah STDERR
Stream3-9 tidak digunakan
Tetapi apa yang terjadi jika Anda mencoba mengalihkan aliran yang sama beberapa kali?
dir > files.txt > two.txt
"Hanya ada satu", dan itu selalu yang terakhir!
Jadi sama dengan dir> two.txt
Oke, ada satu kemungkinan tambahan, mengalihkan aliran ke aliran lain.
dir 1>files.txt 2>&1
2> & 1 mengalihkan aliran2 ke aliran1 dan 1> files.txt mengarahkan semua ke files.txt .
Urutan penting di sini!
dir ... 1>nul 2>&1
dir ... 2>&1 1>nul
berbeda. Yang pertama mengalihkan semua (STDOUT dan STDERR) ke NUL,
tetapi baris kedua mengalihkan STDOUT ke NUL dan STDERR ke STDOUT "kosong".
Sebagai satu kesimpulan, jelas mengapa contoh Otávio Décio dan andynormancx tidak dapat bekerja.
command > file >&1
dir > file.txt >&2
Keduanya mencoba mengalihkan aliran1 dua kali, tetapi "Hanya ada satu", dan itu selalu yang terakhir.
Jadi Anda mengerti
command 1>&1
dir 1>&2
Dan pada contoh pertama, pengalihan stream1 ke stream1 tidak diperbolehkan (dan tidak terlalu berguna).
Semoga membantu.