Background info from Microsoft documentation
While the accepted answer to this question is correct, it really doesn’t do much to explain why it works, and since the syntax is not immediately clear I did a quick www search to find out what was actually going on. In the hopes that this information is helpful to others, I’m posting it here.
Taken from the Microsoft documentation page:
Redirecting error messages from Command Prompt: STDERR/STDOUT
Summary
When redirecting output from an application using the
>
symbol, error messages still print to the screen. This is because error messages are often sent to the Standard Error stream instead of the Standard Out stream.Output from a console (Command Prompt) application or command is often sent to two separate streams. The regular output is sent to Standard Out (STDOUT) and the error messages are sent to Standard Error (STDERR). When you redirect console output using the
>
symbol, you are only redirecting STDOUT. In order to redirect STDERR, you have to specify2>
for the redirection symbol. This selects the second output stream that is STDERR.Example
The command
dir file.xxx
(where file.xxx does not exist) will display the following output:Volume in drive F is Candy Cane Volume Serial Number is 34EC-0876
File Not FoundIf you redirect the output to the NUL device using
dir file.xxx > nul
, you will still see the error message:File Not Found
To redirect the error message to NUL, use the following command:
dir file.xxx 2> nul
Or, you can redirect the output to one place, and the errors to another.
dir file.xxx 1> output.msg 2>&1
You can print the errors and standard output to a single file by using the
&1
command to redirect the output for STDERR to STDOUT and then sending the output from STDOUT to a file:dir file.xxx 1> output.msg 2>&1
Перенаправление ввода-вывода в cmd
Перенаправление стандартных ввода-вывода и ошибок
С помощью переназначения устройств ввода/вывода одна программа может направить свой вывод на вход другой или перехватить вывод другой программы, используя его в качестве своих входных данных. Таким образом, имеется возможность передавать информацию от процесса к процессу при минимальных программных издержках. Практически это означает, что для программ, которые используют стандартные входные и выходные устройства, операционная система позволяет:
- выводить сообщения программ не на экран (стандартный выходной поток), а в файл или на принтер (перенаправление вывода);
- читать входные данные не с клавиатуры (стандартный входной поток), а из заранее подготовленного файла (перенаправление ввода);
- передавать сообщения, выводимые одной программой, в качестве входных данных для другой программы (конвейеризация или композиция команд).
Из командной строки эти возможности реализуются следующим образом. Для того, чтобы перенаправить текстовые сообщения, выводимые какой-либо командой из командной строки, в текстовый файл, нужно использовать конструкцию команда > имя_файла. Если при этом заданный для вывода файл уже существовал, то он перезаписывается (старое содержимое теряется), если не существовал создается. Можно также не создавать файл заново, а дописывать информацию, выводимую командой, в конец существующего файла. Для этого команда перенаправления вывода должна быть задана так: команда >> имя_файла. С помощью символа < можно прочитать входные данные для заданной команды не с клавиатуры, а из определенного (заранее подготовленного) файла: команда < имя_файла
Примеры перенаправления ввода/вывода в командной строке
Приведем несколько примеров перенаправления ввода/вывода.
1. Вывод результатов команды ping в файл ping ya.ru > ping.txt
2. Добавление текста справки для команды XCOPY в файл copy.txt: XCOPY /? >> copy.txt
В случае необходимости сообщения об ошибках (стандартный поток ошибок) можно перенаправить в текстовый файл с помощью конструкции команда 2> имя_файла В этом случае стандартный вывод будет производиться на экран. Также имеется возможность информационные сообщения и сообщения об ошибках выводить в один и тот же файл. Делается это следующим образом: команда > имя_файла 2>&1
Например, в приведенной ниже команде стандартный выходной поток и стандартный поток ошибок перенаправляются в файл copy.txt: XCOPY A:1.txt C: > copy.txt 2>&1
Windows 10, Windows 11, Windows 7, Windows 8, Windows Server, Windows Vista, Windows XP
- 15.11.2016
- 74 803
- 20
- 12.11.2022
- 53
- 50
- 3
- Содержание статьи
- Использование перенаправления выполнения команд
- Комментарии к статье ( 20 шт )
- Добавить комментарий
Командная строка — неизменный компонент любой операционной системы Windows, который берет свое происхождение прямиком от её предка — операционной системы MS-DOS. Данная программа имеет довольно широкие возможности, но сейчас мы поговорим о довольно примитивной вещи — сохранение (по факту — перенаправление) вывода командной строки в текстовый файл.
Почитать о том, как сделать тоже самое в LinuxBSD системах можно в этой статье.
Использование перенаправления выполнения команд
В случае, если необходимо просто сохранить все, что вывела командная строка в текстовый файл, то нужно после введенной команды добавить символ «>», что приведет к созданию текстового файла и весь вывод командной строки отправится туда. Пример:
ping 8.8.8.8 > C:Logsping.txt
Обратите внимание, что командная строка при перенаправлении вывода может создать только текстовый файл, но не папку. Если вы введете несуществующий путь, то получите ошибку!
Как видно, командная строка не вывела никакого результата введенной команды на экран, но зато сохранила все в файл ping.txt. К сожалению, существуют ограничения перенаправления вывода, которые не позволяют одновременно отображать вывод и в окне командной строки, и сохранять их в текстовый файл. Однако, можно воспользоваться хитростью — сразу по завершению выполнения команды вывести содержимое текстового файла на экран с помощью команды type. Получится что-то следующее:
ping 8.8.8.8 > C:Logsping.txt & type C:Logsping.txt
Если требуется файл не записывать (существующий текстовый файл будет перезаписан), а дописывать (существующий текстовый файл будет дополнен), нужно вместо одного символа «>» использовать два — «>>».
ping 8.8.8.8 >> C:Logsping.txt
В случае, если в текстовый файл нужно сохранить так же какой-то текст (например, в составе bat файла), то можно воспользоваться комбинацией с командой echo:
echo Имя компьютера: %computername% > C:Logsping.txt
echo Проверка пинга до google.ru >> C:Logsping.txt
ping google.ru >> C:Logsping.txt
Содержимое получившегося текстового файла будет следующим:
Для того, чтобы вывод был только в текстовый файл (без показа в окне командной строки), нужно вставить первой строкой в bat файле команду @echo off
Используйте оператор перенаправления, чтобы перенаправить вывод команды в файл. Это один из наших любимых приемов и хитростей командной строки.
Вместо этого всю информацию, отображаемую в командной строке после выполнения команды, можно сохранить в файл, который вы можете открыть в Windows для последующего использования или манипулирования, как вам нравится.
Хотя существует несколько операторов перенаправления, о которых вы можете подробно прочитать здесь, два, в частности, используются для вывода результатов команды в файл: знак больше, >, и двойной знак больше, >>.
Как использовать операторы перенаправления
Самый простой способ узнать, как использовать эти операторы перенаправления, — это посмотреть несколько примеров:
ipconfig / все> mynetworksettings.txt
Перенаправление результатов ipconfig в файл TXT.
В этом примере вся информация о конфигурации сети обычно отображается на экране после запуска IPCONFIG / все, сохраняется в файл с именем mynetworksettings.txt. Он хранится в папке слева от команды, в данном случае C: Users jonfi.
Это > оператор перенаправления находится между командой ipconfig и именем файла. Если файл уже существует, он будет перезаписан. Если его еще нет, он будет создан.
Хотя файл будет создан, если он еще не существует, папки не будут. Чтобы сохранить вывод команды в файл в определенной папке, которая еще не существует, сначала создайте папку, а затем запустите команду. Создавайте папки, не выходя из командной строки, с помощью команды mkdir.
ping 10.1.0.12> «C: Users jonfi Desktop Ping Results.txt»
Перенаправление результатов «ping» в файл TXT в другой папке.
Здесь, когда выполняется команда ping, командная строка выводит результаты в файл с именем Ping Results.txt расположен на рабочем столе пользователя jonfi, который находится по адресу C: Users jonfi Desktop. Полный путь к файлу заключен в кавычки, потому что был задействован пробел.
Помните, что при использовании > оператор перенаправления, указанный файл создается, если он еще не существует, и перезаписывается, если он существует.
Оператор перенаправления добавления
Оператор двойной стрелки добавляет, а не заменяет файл:
ipconfig / all >> сервер файлы officenetsettings.log
Добавление результатов «ipconfig» к существующему файлу журнала.
В этом примере используется >> оператор перенаправления, который работает почти так же, как > только вместо перезаписи выходного файла, если он существует, он добавляет выходные данные команды в конец файла.
Вот пример того, как этот файл журнала может выглядеть после того, как в него была экспортирована команда:
Журнал результатов командной строки.
Это >> Оператор перенаправления полезен, когда вы собираете аналогичную информацию с разных компьютеров или команд и хотите, чтобы все эти данные были в одном файле.
Приведенные выше примеры операторов перенаправления находятся в контексте командной строки, но вы также можете использовать их в BAT-файле. Когда вы используете BAT-файл для передачи вывода команды в текстовый файл, используются те же самые команды, которые описаны выше, но вместо нажатия вводить чтобы запустить их, вам просто нужно открыть файл .BAT.
Использование операторов перенаправления в пакетных файлах
Операторы перенаправления работают в пакетных файлах, включая команду так же, как и в командной строке:
@ECHO OFF
:: Вывести tracert в текстовый файл.
TITLE Журнал Tracert
tracert yahoo.com> Z: yahootracert.txt
Выше приведен пример того, как создать командный файл, в котором используется оператор перенаправления с командой tracert.
Файл yahootracert.txt (показанный выше) будет создан на диске Z: через несколько секунд после выполнения файла sample.bat. Как и в приведенных выше примерах, в файле показано все, что могла бы раскрыть командная строка, если бы не использовался оператор перенаправления.
Обновлено 2023 января: перестаньте получать сообщения об ошибках и замедлите работу вашей системы с помощью нашего инструмента оптимизации. Получить сейчас в эту ссылку
- Скачайте и установите инструмент для ремонта здесь.
- Пусть он просканирует ваш компьютер.
- Затем инструмент почини свой компьютер.
В Windows 10 возможность сохранения выходных данных PowerShell или командной строки в текстовом файле может быть полезна во многих случаях. Например, когда вы решаете проблему, это удобный способ экспортировать и анализировать результаты команды, или вы можете поделиться результатами с кем-то, кто может помочь вам. Вы можете распечатать вывод команды в текстовый файл, чтобы сохранить настройки системы для целей документации и многое другое.
Хотя вы можете просто выбрать содержимое, щелкнуть выделение правой кнопкой мыши, чтобы скопировать содержимое в буфер обмена, а затем вставить его в текстовый файл, этот метод требует дополнительных шагов, которых можно избежать, используя одну командную строку с символом «Перенаправить вывод в файлФункция.
В этом руководстве по Windows 10 мы расскажем, как сохранить вывод команды в текстовый файл, независимо от того, используете ли вы командную строку или PowerShell.
Если вывод приложения перенаправляется символом «>», сообщения об ошибках всегда печатаются на дисплее. Это связано с тем, что сообщения об ошибках часто отправляются в стандартный поток ошибок вместо стандартного потока вывода.
Обновление за январь 2023 года:
Теперь вы можете предотвратить проблемы с ПК с помощью этого инструмента, например, защитить вас от потери файлов и вредоносных программ. Кроме того, это отличный способ оптимизировать ваш компьютер для достижения максимальной производительности. Программа с легкостью исправляет типичные ошибки, которые могут возникнуть в системах Windows — нет необходимости часами искать и устранять неполадки, если у вас под рукой есть идеальное решение:
- Шаг 1: Скачать PC Repair & Optimizer Tool (Windows 10, 8, 7, XP, Vista — Microsoft Gold Certified).
- Шаг 2: Нажмите «Начать сканирование”, Чтобы найти проблемы реестра Windows, которые могут вызывать проблемы с ПК.
- Шаг 3: Нажмите «Починить все», Чтобы исправить все проблемы.
Вывод консольного приложения (командной строки) или команды часто отправляется в два отдельных потока данных. Обычный вывод отправляется в стандартный выход (STDOUT), а сообщения об ошибках отправляются в стандартную ошибку (STDERR). Если вы перенаправляете вывод консоли с помощью символа «>», вы перенаправляете только STDOUT. Чтобы перенаправить STDERR, вы должны указать «2>» для значка перенаправления. Это выберет второй выходной поток, который является STDERR.
Чтобы перенаправить вывод команды в текстовый файл, а не печатать его на экране в командном окне, просто выполните команду и добавьте ее с помощью символа «>» в квадратных скобках, что соответственно называется «перенаправление».
Например, если вы хотите сохранить выходные данные функции DIR в текстовом файле, а не прокручивать экран за страницей в командном окне, вы должны использовать
DIR> some-descriptive-filename.txt
вот так, где мы запустили команду DIR из каталога C: и сохранили вывод в корневом каталоге диска D как «c-drive-directory-output.txt».
Обратите внимание, что выходные данные не отображаются в окне команд выше, но когда мы открываем текстовый документ, мы видим полный вывод команды:
Любая команда, имеющая вывод командного окна (независимо от его размера), может быть объединена с> filename.txt, и вывод сохраняется в указанном текстовом файле.
Помимо однократного запуска команды, вы также можете немного изменить ее, чтобы скопировать последовательный вывод в тот же текстовый файл. Например, предположим, что вы хотите отправить вывод одной и той же команды в один и тот же текстовый файл до и после внесения некоторых изменений (например, перезапуска маршрутизатора и получения нового IP-адреса). Вы можете начать команду сначала с одинарной угловой скобки «>», а затем повторять последующие экземпляры той же команды с двойной угловой скобкой «>>».
Заключение
Это позволяет нам хранить любое количество результатов заказа в текстовом файле для легкого доступа или обмениваться информацией с другими при необходимости.
https://ss64.com/nt/syntax-redirection.html
Совет экспертов: Этот инструмент восстановления сканирует репозитории и заменяет поврежденные или отсутствующие файлы, если ни один из этих методов не сработал. Это хорошо работает в большинстве случаев, когда проблема связана с повреждением системы. Этот инструмент также оптимизирует вашу систему, чтобы максимизировать производительность. Его можно скачать по Щелчок Здесь
CCNA, веб-разработчик, ПК для устранения неполадок
Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.
Сообщение Просмотров: 107
Если вы оказались без доступа к чему-либо кроме командной строки или Windows PowerShell и по какой-то причине вам требуется возможность создания или чтения текстовых файлов, это вполне реализуемо, причем более чем одним методом.
В этой инструкции подробно о работе с текстовыми файлами в командной строки или PowerShell (разумеется, можно и в Терминале Windows) — создание и сохранение текстовых файлов, их вывод и чтение в консоли.
Создание текстовых файлов в командной строке
Возможность создания текстовых файлов доступна как в командной строке (cmd.exe), так и в PowerShell. Начнем с первого варианта.
Во всех случаях учитывайте, что при использовании кириллицы потенциально возможны проблемы с кодировкой, а в некоторых случаях кодировка может отличаться при использовании разных команд.
Команда ECHO
Команда командной строки echo предназначена для вывода текстовых сообщений в окне консоли, например, при выполнении сценария в bat-файле, но может быть использована и для вывода текста в файл, благодаря возможности использования оператора «>» для перенаправления вывода из консоли в файл.
Пример команды:
echo Содержимое текстового файла > file.txt
В результате её выполнения в текущей рабочей папке командной строки будет создан файл с именем file.txt и содержимым «Содержимое текстового файла».
COPY CON
Команда copy с параметром con позволяет скопировать содержимое консоли в файл. Использование возможности будет состоять из следующих шагов:
- Введите команду
copy con имя_файла.txt
файл не будет создан, но после выполнения указанной команды у вас появится возможность набрать содержимое этого файла, которое по завершении процесса будет в него сохранено.
- Курсор переместится на строчку ниже, и вы сможете набирать текст так, как делаете это обычно, включая перенос строки.
- Для завершения набора и сохранения текстового файла нажмите сочетание клавиш Ctrl+Z, а затем — Enter. Это добавит отметку конца файла и сохранит его в текущей папке с указанным на 1-м шаге именем.
Создание текстового файла в PowerShell
PowerShell также имеет набор встроенных командлетов для сохранения текстовых данных в файл.
Out-File
Использование Out-File в PowerShell по своей функциональности сходно с оператором перенаправления вывода в командной строке. Вывод консоли перенаправляется в заданный файл.
Пример использования:
"Текстовая строка" | Out-File -FilePath .file.txt
В этом примере в текущей папке PowerShell будет создан файл с именем file.txt и содержимым «Текстовая строка».
New-Item
Создание нового текстового файла в PowerShell возможно с помощью командлета New-Item. Пример команды, в которой создается текстовый файл file.txt, содержащий «Текстовая строка» в текущем расположении:
New-Item -Path . -Name "file.txt" -ItemType "file" -Value "Текстовая строка"
Set-Content и Add-Content
Ещё два командлета PowerShell для работы с текстовыми файлами:
- Set-Content — перезаписывает содержимое файла
- Add-Content — добавляет содержимое в конце выбранного файла
Их использование можно увидеть на примере следующей команды:
Add-Content -Path .file.txt -Value "Ещё одна текстовая строка"
Вывод (чтение) текстового файла в командной строке и PowerShell
Теперь перейдем к способам просмотреть текстовые файлы в командной строке или PowerShell. Как и в предыдущем случае, учитывайте, что для файлов, содержащих кириллицу, возможны проблемы с отображением символов в правильной кодировке.
TYPE
Самый простой вариант — использование команды TYPE с указанием пути к файлу, который нужно отобразить в консоли, например:
type file.txt
MORE
Если файл объемный и содержит большое количество строк, используйте команду more, например:
more file.txt
Выполнив команду, вы увидите часть содержимого текста, которая помещается в окне консоли, далее вы можете использовать следующие клавиши:
- Enter — для отображения следующей строки файла.
- Пробел — для отображения следующих строк документа, которые поместятся в активное окно консоли.
- P — Показать следующие N строк. После нажатия этой клавиши с последующим указанием количества строк, будет выведено соответствующее количество строк текстового документа.
- S — пропустить следующие N строк, работает аналогично предыдущему варианту.
- Клавиша «=» — для отображения текущего номера строки.
- Q — для прекращения выполнения команды more.
Get-Content
Вывести содержимое текстового файла в PowerShell можно с помощью Get-Content с указанием пути к файлу, например:
Get-Content file.txt
Также вы можете выводить определенные строки файла, с помощью команд вида (вывод первых или последних 10 строк соответственно):
Get-Content file.txt | Select-Object -First 10 Get-Content file.txt | Select-Object -Last 10
Или присвоить содержимое файла переменной и вывести конкретную строку:
$file_text = Get-Content file.txt $file_text[2]
Помимо использования ручного ввода команд, вы можете использовать консольные текстовые редакторы — сторонние в версиях для Windows, такие как Vim, Nano, Kinesics Text Editor или даже старый встроенный edit.com (может отсутствовать в вашей версии системы и требовать патча NTVDMx64).