вывод может идти в два потока -- стандартный stdout и ошибок stderr
Решил я воочию увидеть разницу между этими потоками. Сейчас у меня на компе 2 жестких диска - C: и D:, подключена флэшка J:, раньше была подключена флэшка G:, но я ее вытащил. Положил файл lshort2e.pdf в папку, в ту же папку положил батник следующего содержания:
Код:
cd /d %0\..
chcp 1251
copy lshort2e.pdf D: >>2.txt
echo перед1 >>2.txt
copy lshort2e.pdf M: 2>>2.txt
echo после1 >>2.txt
echo перед2 >>2.txt
copy lshort2e.pdf N: 1>>2.txt
echo после2 >>2.txt
echo перед3 >>2.txt
copy lshort2e.pdf G: 2>>2.txt
echo после3 >>2.txt
echo перед4 >>2.txt
copy lshort2e.pdf J: 2>>2.txt
echo после4 >>2.txt
echo перед5 >>2.txt
copy lshort2e.pdf C:\ 1>>2.txt
echo после5 >>2.txt
pause
Файл 2.txt оказался таким:
Код:
Скопировано файлов: 1.
перед1
Системе не удается найти указанный диск.
после1
перед2
после2
перед3
Отказано в доступе.
после3
перед4
после4
перед5
Скопировано файлов: 1.
после5
Почти все оказалось предсказуемо: с диском M: все понятно: его нет в компе, вывелось сообщение об ошибке; с диском N: не вполне понятно, если поток stdout общий, то он должен содержать и ошибки, а там ничего нет! Это получается, тот поток общий минус ошибки, что ли?; с диском G: не знал, что так будет, узнал; С диском J: все ясно: ошибок нет, вот ничего и не вывелось; с диском C: ясно, но не полностью: с одной стороны это совпадает с выводом первой команды копирования, что ожидаемо, с другой стороны, без \, даже без указания потока, в файле 2.txt выводится следующее:
Код:
перед5
Невозможно скопировать файл поверх самого себя.
Скопировано файлов: 0.
после5
, что не согласуется с частью кода батника, в которой фигурирует диск D: и с вот этим:
Слеш тут вообще никаким боком.
-- 06.06.2018, 21:38 --chcp меняет только кодировку консоли, насколько помню. Менять, как там будет ввод и вывод с файлами — если только у программ отдельные настройки есть.
По ходу, не однозначно: такой батник:
Код:
cd /d %0\..
copy *.xls D: >>1.txt
pause
порождает такой файл 1.txt:
Код:
Shapka.xls
Tetrad.xls
‘Є®ЇЁа®ў ® д ©«®ў: 2.
А такой батник:
Код:
cd /d %0\..
chcp 1251
copy *.xls D: >>1.txt
pause
- уже такой файл 1.txt:
Код:
Shapka.xls
Tetrad.xls
Скопировано файлов: 2.