Ні, з чистим перенаправленням не можна.
Але з деякими хитрощами (наприклад, tee.bat ) ви можете.
Я намагаюся трохи пояснити перенаправлення.
Ви переспрямовуєте один з десяти потоків за допомогою > file або <file
Неважливо, якщо перенаправлення є перед командою або після неї, тож ці два рядки майже однакові.
dir > file.txt
> file.txt dir
Перенаправлення в цьому прикладі є лише ярликом для 1> , це означає, що потік 1 (STDOUT) буде перенаправлений.
Таким чином, ви можете перенаправити будь-який потік, попередньо додавши число, наприклад 2> err.txt, і також дозволяється перенаправляти кілька потоків в одному рядку.
dir 1> files.txt 2> err.txt 3> nothing.txt
У цьому прикладі "стандартний вихід" перейде до файлів.txt, всі помилки будуть у err.txt, а stream3 перейде у Nothing.txt (DIR не використовує потік 3).
Stream0 is STDIN
Stream1 is STDOUT
Stream2 is STDERR
Stream3-9 не використовуються
Але що станеться, якщо ви спробуєте перенаправити один і той же потік кілька разів?
dir > files.txt > two.txt
"Може бути тільки один", і це завжди останній!
Отже, це дорівнює dir> two.txt
Гаразд, є одна додаткова можливість - перенаправити потік на інший.
dir 1>files.txt 2>&1
2> & 1 перенаправляє stream2 до stream1 та 1> files.txt перенаправляє всі до файлів.txt .
Тут важливий порядок!
dir ... 1>nul 2>&1
dir ... 2>&1 1>nul
різні. Перший перенаправляє всі (STDOUT та STDERR) до NUL,
але другий рядок перенаправляє STDOUT на NUL, а STDERR на "порожній" STDOUT.
Як один з висновків, очевидно, чому приклади Отавіо Дечіо та Андінорманка не можуть працювати.
command > file >&1
dir > file.txt >&2
Обидва намагаються перенаправити stream1 два рази, але "Може бути лише один", і це завжди останній.
Так ви отримуєте
command 1>&1
dir 1>&2
І в першому зразку перенаправлення потоку1 на потік1 не дозволено (і не дуже корисно).
Сподіваюся, це допомагає.