Как организовать вывод выходных данных команды в файл

Обновлено: 03.07.2024

Вместо этого вся информация, отображаемая в командной строке после выполнения команды, может быть сохранена в файл, который вы можете открыть в Windows для последующего использования или манипулирования им по своему усмотрению.

Хотя есть несколько операторов перенаправления, о которых вы можете подробно прочитать здесь , в частности, два используются для вывода результатов команды в файл: знак «больше», > и знак «больше», >> .

Как использовать операторы перенаправления

Самый простой способ научиться использовать эти операторы перенаправления — это посмотреть несколько примеров:

В этом примере вся информация о конфигурации сети, обычно отображаемая на экране после запуска ipconfig / all , сохраняется в файл с именем mynetworksettings.txt . Он хранится в папке слева от команды, в данном случае C: \ Users \ jonfi .

Оператор перенаправления > находится между командой ipconfig и именем файла. Если файл уже существует, он будет перезаписан. Если он еще не существует, он будет создан.

Хотя файл будет создан, если он еще не существует, папок не будет. Чтобы сохранить вывод команды в файл в определенной папке, которая еще не существует, сначала создайте папку, а затем выполните команду. Создавайте папки, не выходя из командной строки с помощью команды mkdir .

Здесь при выполнении команды ping командная строка выводит результаты в файл с именем Ping Results.txt, расположенный на рабочем столе пользователя jonfi , который находится по адресу C: \ Users \ jonfi \ Desktop . Весь путь к файлу заключен в кавычки, потому что там был пробел.

Помните, что при использовании оператора перенаправления > указанный файл создается, если он еще не существует, и перезаписывается, если он существует.

Оператор добавления перенаправления

Оператор двойной стрелки добавляет, а не заменяет файл:

Снимок экрана, показывающий, как использовать командную строку для добавления результатов ipconfig в существующий файл

В этом примере используется оператор перенаправления >>, который работает почти так же, как оператор > , но вместо перезаписи выходного файла, если он существует, он добавляет вывод команды в конец файла.

Вот пример того, как может выглядеть этот файл LOG после экспорта в него команды:

Снимок экрана файла журнала с записанными в него командами

Оператор перенаправления >> полезен, когда вы собираете похожую информацию с разных компьютеров или команд и хотите, чтобы все эти данные были в одном файле.

Приведенные выше примеры операторов перенаправления находятся в контексте командной строки, но вы также можете использовать их в файле BAT . Когда вы используете BAT-файл для передачи вывода команды в текстовый файл, используются те же самые команды, описанные выше, но вместо нажатия Enter для их запуска вам просто нужно открыть .BAT-файл.

Используйте операторы перенаправления в пакетных файлах

Операторы перенаправления работают в пакетных файлах, включая команду так же, как в командной строке:

команда tracert BAT с оператором перенаправления

Выше приведен пример того, как создать пакетный файл, который использует оператор перенаправления с командой tracert .

В Windows 10 возможность сохранения выходных данных PowerShell или командной строки в текстовом файле может быть полезна во многих случаях. Например, когда вы решаете проблему, это удобный способ экспортировать и анализировать результаты команды, или вы можете поделиться результатами с кем-то, кто может помочь вам. Вы можете распечатать вывод команды в текстовый файл, чтобы сохранить настройки системы для целей документации и многое другое.


В этом руководстве по Windows 10 мы расскажем, как сохранить вывод команды в текстовый файл, независимо от того, используете ли вы командную строку или PowerShell.

Как сохранить вывод командной строки в текстовый файл в Windows 10

Ноябрьское обновление 2021:

Теперь вы можете предотвратить проблемы с ПК с помощью этого инструмента, например, защитить вас от потери файлов и вредоносных программ. Кроме того, это отличный способ оптимизировать ваш компьютер для достижения максимальной производительности. Программа с легкостью исправляет типичные ошибки, которые могут возникнуть в системах Windows - нет необходимости часами искать и устранять неполадки, если у вас под рукой есть идеальное решение:

скачать


Например, если вы хотите сохранить выходные данные функции DIR в текстовом файле, а не прокручивать экран за страницей в командном окне, вы должны использовать

DIR> some-descriptive-filename.txt
вот так, где мы запустили команду DIR из каталога C: \ и сохранили вывод в корневом каталоге диска D как «c-drive-directory-output.txt».

Обратите внимание, что выходные данные не отображаются в окне команд выше, но когда мы открываем текстовый документ, мы видим полный вывод команды:

Любая команда, имеющая вывод командного окна (независимо от его размера), может быть объединена с> filename.txt, и вывод сохраняется в указанном текстовом файле.


Заключение

Это позволяет нам хранить любое количество результатов заказа в текстовом файле для легкого доступа или обмениваться информацией с другими при необходимости.

CCNA, веб-разработчик, ПК для устранения неполадок

Я компьютерный энтузиаст и практикующий ИТ-специалист. У меня за плечами многолетний опыт работы в области компьютерного программирования, устранения неисправностей и ремонта оборудования. Я специализируюсь на веб-разработке и дизайне баз данных. У меня также есть сертификат CCNA для проектирования сетей и устранения неполадок.

Всё о PowerShell в Windows и на Linux. Системное администрирование Windows

Аналоги > и >> в PowerShell

Если вы знакомы с операторами командной строки Linux, то вы можете знать, что оператор «>» перенаправляет вывод в файл, если файл существует, то он перезаписывается, если файл не существует, то он создаётся и в него записывается содержимое.

В PowerShell этот оператор также работает, например, в следующей команде результат работы командлета будет сохранён в файл man.txt:

В Linux существует ещё один оператор для перенаправления стандартного вывода, это «>>», который работает аналогично предыдущему, но если файл уже существует, то вместо перезаписи, новые данные дописываются в файл, например, следующая команда допишет выводом командлета содержимое файла man.txt, а если его нет, то создаст этот файл:

В PowerShell вы можете использовать «>» и «>>» если вам достаточно простого перенаправления вывода в файл. Также имеется командлет Out-File который кроме выполнения перенаправления вывода имеет дополнительную функциональность.

Перенаправление вывода в PowerShell

Для перенаправления вывода можно использовать следующие методы:

  • Использовать командлет Out-File, который отправляет выходные данные команды в текстовый файл. Как правило, вы используете командлет Out-File, когда вам нужно использовать его параметры, такие как параметры -Encoding, -Force, -Width или -NoClobber.
  • Использовать командлет Tee-Object, который отправляет вывод команды в текстовый файл, а затем отправляет его в конвейер.
  • Использовать операторы перенаправления PowerShell.

Операторы перенаправления PowerShell

Операторы перенаправления позволяют отправлять потоки данных в файл или выходной поток SUCCESS.

Операторы перенаправления PowerShell используют следующие числа для представления доступных выходных потоков:

№ потока Описание Представлен в
1 SUCCESS Stream PowerShell 2.0
2 ERROR Stream PowerShell 2.0
3 WARNING Stream PowerShell 3.0
4 VERBOSE Stream PowerShell 3.0
5 DEBUG Stream PowerShell 3.0
6 INFORMATION Stream PowerShell 5.0
* All Streams PowerShell 3.0

[!ПРИМЕЧАНИЕ] В PowerShell также есть поток PROGRESS, но он не используется для перенаправления.

Ниже перечислены операторы перенаправления PowerShell, где n представляет номер потока. Поток SUCCESS (1) используется по умолчанию, если поток не указан.

[!ПРИМЕЧАНИЕ] В отличие от некоторых оболочек Unix, вы можете перенаправлять другие потоки только в поток SUCCESS.

Пример 1: Перенаправление ошибок и вывод в файл

В этом примере dir запускается для двух элементов, один из который завершится успешно, а для другого — с ошибкой.

Он использует «2>&1» для перенаправления потока ERROR в поток SUCCESS и «>» для отправки результирующего потока SUCCESS в файл с именем dir.log.

Эта команда отправляет все данные потока SUCCESS в файл с именем script.log.

Пример 3. Отправка потоков Success, Warning и Error в файл

В этом примере показано, как можно комбинировать операторы перенаправления для достижения желаемого результата.

  • 3>&1 перенаправляет поток WARNING в поток SUCCESS.
  • 2>&1 перенаправляет поток ERROR в поток SUCCESS (который теперь также включает все данные потока WARNING)
  • > перенаправляет поток SUCCESS (который теперь содержит потоки WARNING и ERROR) в файл с именем C:\temp\redirection.log)

В этом примере все потоки выводятся из сценария с именем script.ps1 в файл с именем script.log.

Пример 5: Подавить все данные Write-Host и Information Stream

В этом примере подавляются все данные Information Stream (информационного потока). Дополнительные сведения о командлетах потока INFORMATION смотрите разделах Write-Host и Write-Information.

1. Операторы перенаправления, которые не добавляют данные (> и n>), перезаписывают текущее содержимое указанного файла без предупреждения.

2. Однако, если файл доступен только для чтения, является скрытым или системным файлом, перенаправление ТЕРПИТ НЕУДАЧУ. Операторы перенаправления добавления (>> и n>>) не записывают в файл, доступный только для чтения, но они добавляют содержимое в системный или скрытый файл.

5. Возможная путаница с операторами сравнения

Оператор «>» не следует путать с оператором сравнения Больше (часто обозначается как «>» в других языках программирования).

В зависимости от сравниваемых объектов вывод с использованием «>» может показаться правильным (поскольку 36 не больше 42).

Однако проверка локальной файловой системы позволяет увидеть, что был создан файл с именем 42, а в него записано содержимое 36.

Попытка использовать обратное сравнение «<» (меньше чем) приводит к системной ошибке:

Если требуется числовое сравнение, следует использовать -lt и -gt.

Как в PowerShell дописать вывод в файл

Итак, оператор «>» перенаправляет вывод, который в противном случае попал бы на экран, в файл. Этот оператор полностью переписывает файл, если он уже существует.

Для того, чтобы вместо замены содержимого файла дописать в него, можно использовать оператор «>>»:

Командлет Out-File для сохранение в файл в PowerShell

Командлет Out-File отправляет вывод в файл. Когда вам нужно указать параметры для вывода, используйте Out-File вместо оператора перенаправления («>»).

Как дописать файл. Аналог «>>» в Out-File

Для того, чтобы добавить вывод в конец существующего файла (вместо его перезаписи), используйте в вашей команде опцию -Append.

Как указать кодировку

Для изменения кодировки по умолчанию, используйте опцию «-Encoding КОДИРОВКА». Кодировкой по умолчанию является UTF8NoBOM.

Опция -Encoding задаёт тип кодировки для целевого файла. Значение по умолчанию — UTF8NoBOM. Кодировка — это динамический параметр, который поставщик FileSystem добавляет в Set-Content. Этот параметр работает только на дисках с файловой системой. Допустимые значения этого параметра следующие:

  • ASCII: использует кодировку для набора символов ASCII (7-бит).
  • BigEndianUnicode: кодирует в формате UTF-16, используя порядок байтов с прямым порядком байтов.
  • OEM: использует кодировку по умолчанию для MS-DOS и консольных программ.
  • Unicode: кодируется в формате UTF-16 с использованием порядка байтов с прямым порядком байтов.
  • UTF7: кодирует в формате UTF-7.
  • UTF8: кодирует в формате UTF-8.
  • UTF8BOM: кодирует в формате UTF-8 с меткой порядка байтов (BOM)
  • UTF8NoBOM: кодирует в формате UTF-8 без метки порядка байтов (BOM)
  • UTF32: кодирует в формате UTF-32.

Как указать путь до файла

Обязательным аргументом командлета Out-File является путь до файла в который будет сделано сохранение выводимых данных. Вы можете указать его с опцией -FilePath, либо опустить эту опцию и указать путь до файла без неё.

Обратите внимание, что вы не можете использовать подстановочные знаки в пути до файла.

Как переписать файл только для чтения

С помощью опции -Force вы можете переопределить атрибут только для чтения и перезаписать существующий файл, доступный только для чтения. Параметр -Force не отменяет ограничения безопасности, то есть если у вас нет прав на записи в указываемый файл, то вы всё равно не сможете записать в него..

Как не добавлять символ новой строки (newline) в конец файла

При записи в файл, в конец будет добавлен символ перехода на новую строку. То есть если в файл будут добавлены другие данные, то они будут записаны с новой строки. Если вы не хотите, чтобы добавлялся символ новой строки, то используйте опцию -NoNewline. Если для формирования вывода используется несколько строк, то по умолчанию они разделяются пробелом, эта опция также отменяет вставку пробелов между строк.

Как запретить перезаписывать существующий файл

Что может быть вводом командлета Out-File

Но с помощью Out-File весь вывод будет сохранён в файл:

Командлеты типа Out- не форматируют объекты; они просто визуализируют их и отправляют в указанное место отображения. Если вы отправляете неформатированный объект командлету Out-, этот командлет отправляет его командлету форматирования перед его визуализацией.

Out-File отправляет данные, но не создаёт никаких объектов вывода. Если вы направите вывод Out-File в Get-Member, командлет Get-Member сообщает, что объекты не были указаны.

Иногда возникает желание зафиксировать результат выполнения команды в cmd . Как правило , такое желание возникает , когда текст не помещается в окно командной строки ( cmd ).

Синтаксис для записи результата выполнения команды простой .

Команда_с_ключами > путь_к_файлу имя_файла.txt

То есть вначале пишется команда со всеми ключами и параметрами , а сразу после последнего символа ставиться символ > потом пробел и пишется путь и имя файла , в который будет сохранен результат . Результат будет сохранен в файл без вывода на экран . Файл сохраняется в кодировке DOS-866.

Для примера , выполним команду ping itindustry-spb.ru с записью на диск D в файл ping.txt

Для этого в командной строке выполняем команду ping itindustry-spb.ru > D: ping.txt

Ниже показан результат выполнения этой команды

Командная строка в операционной системе Windows довольно удобный инструмент, который позволяет делать многие вещи намного быстрее. Но она имеет один недостаток с ней нельзя работать также как с другими программами. Текстовый интерфейс требует знания специальных команд. В данной статье мы рассмотрим два способа сохранения вывода командной строки.

Часто возникает необходимость сохранить вывод из командной строки.

Способ № 1. Сохранения текста из командной строки в файл.

cmd запись в текстовый файл

Если после команды добавить >> и ввести адрес текстового документа, то результаты выполнения данной команды будут сохранены в этом файле.

Например, вводим ipconfig /all >> d:cmd.txt и жмем ввод для выполнения команды. После того как команда будет выполнена в текстовом файле cmd.txt на диске d: будут сохранены все результаты. При этом в текст будет закодирован с помощью кодировки IBM CP866. Поэтому для того чтобы его открыть придётся использовать сторонние приложения, например программу Akelpad.

Способ № 2. Сохранение текста из командной строки в буфер обмена.

cmd запись в текстовый файл

Например, вводим ipconfig /all | clip и жмем ввод для выполнения команды. Когда выполнение команды будет завершено, результаты будут помещены в буфер обмена. Для того чтобы воспользоваться этими результатами достаточно вставить текст в любом текстовом редакторе с помощью всем известной комбинации клавиш Cntrl+V.

Способ № 3. Скопировать текст из командной строки.

Последний способ позволяет сохранить не только результаты работы команды, но и всю остальную информацию из командной строки.

Чтобы это сделать кликаем правой кнопкой мышки по командной строке и вызываем контекстное меню. В открывшемся меню выбираем пункт «Пометить».

cmd запись в текстовый файл

После этого выделяем текст в командной строке с помощью мышки и нажимаем на клавишу Enter. После нажатия на Enter выделение исчезнет, а текст будет скопирован в буфер обмена.

Описание

Почитать о том, как сделать тоже самое в LinuxBSD системах можно в этой статье.

Другие статьи:

Комментарии:

У меня есть программа на Visual Studio C++ она выводит числа и текст,можно ли как-то сохранять все что выводит в текстовый документ?
Искал в интернете ничего не нашел про вывод в текстовый документ именно в C++.

Добрый день.
Тогда можно можно ещё и на ФТП грузить результат ?)

Не совсем понял про какие переменные для ping или systeminfo идет речь, поэтому лучше уточните, что именно вы хотите сделать.

ДА, лучше, благодарю. Напоследок, где поточнее можно почитать про другие переменные, которые может использовать тот же ping или systeminfo (нужно было для systeminfo), а то в хелпе к systeminfo описаны лишь несколько базовых операций, а про переменные ни слова.

А вам не проще будет использовать имена компьютеров в имени файлов отчета? Для этого используйте переменную %COMPUTERNAME% в названии файла, в который идет сохранение, например:

Подскажите, а как можно сохранять файл отчета с новыми номерами, чтобы они шли по порядку друг за другом?
То есть, я сохраняю файл отчета, то же самое проделывается на других машинах и все сохраняется в одну папку с одинаковым именем файла (потому что сделано через bat), как сделать, чтобы файл нумеровался и не заменялся.

Что подразумевается под общим диском? Если сетевой диск, то у него должна быть конкретная буква, под которой он смонтирован в системе, и нужно проделать все то же самое, о чем написано в статье:

ping 8.8.8.8 > Z: est.txt

Читайте также: