При выполнении каких-либо команд в командной строке или PowerShell результат их выполнения отображается прямо в консоли: это удобно, но иногда требуется вывести сохранить эти результаты в файл для дальнейшей работы или анализа.
В этой инструкции подробно о том, как выводить результаты выполнения команд Windows не только в окне консоли, но и в текстовый файл на диске. На близкую тему: Способы создания текстового файла в командной строке и PowerShell.
Командная строка
Для команд командной строки возможны несколько способов вывода результатов в файл. Сама команда может быть любой, но в зависимости от того, какой из подходов вы будете использовать, результат будет отличаться.
Вывести результат выполнения команды командной строки в текстовый файл можно следующими способами:
- Первый вариант — простой вывод в файл. При этом если файл уже существует, он будет перезаписан, а в окне консоли вывод команды не отобразится:
команда > путь_к_файлу
Пример вы можете увидеть на скриншоте ниже.
- Второй метод не затирает предыдущее содержимое файла, если оно уже есть, а добавляет вывод команды к уже имеющемуся в файле содержимому. Как и в предыдущем случае в окне консоли результат отображаться не будет:
команда >> путь_к_файлу
Например, для команд приведенных на скриншоте, результат будет записан в файл дважды.
- Если требуется вывод в файл с одновременным выводом в окне командной строки, можно использовать следующий подход:
команда >> путь_к_файлу | type путь_к_файлу
В последнем случае вывод команды будет сохранен в файл, а затем уже содержимое сохраненного файла отображено в окне консоли.
Windows PowerShell
Если команды выполняются в PowerShell, вы можете использовать команду Tee-Object следующими способами:
- Вывод результатов команды в текстовый файл и консоль с перезаписыванием данных в файле:
команда | tee путь_к_файлу
- Вывод результатов команды в файл с добавлением вывода к имеющемуся содержимому файла:
команда | tee -append путь_к_файлу
- Если нужно вывести в файл результаты выполнения ряда команд, включая сообщения об ошибках, вы можете использовать следующих подход:
Start-Transcript -Path "путь_к_файлу" ваши команды Stop-Transcript
В части PowerShell приведены лишь базовые варианты, в действительности возможностей вывода нужных данных при выполнении команд в файл в этом языке присутствует больше. Но, надеюсь, для большинства моих читателей приведённых сведений будет достаточно для их задач.
What to Know
- The > redirection operator goes between the command and the file name, like ipconfig > output.txt.
- If the file already exists, it’ll be overwritten. If it doesn’t, it will be created.
- The >> operator appends the file. Instead of overwriting the file, it appends the command output to the end of it.
Use a redirection operator to redirect the output of a command to a file. All the information displayed in Command Prompt after running a command can be saved to a file, which you can reference later or manipulate however you like.
How to Use Redirection Operators
While there are several redirection operators, two, in particular, are used to output the results of a command to a file: the greater-than sign (>) and the double greater-than sign (>>).
The easiest way to learn how to use these redirection operators is to see some examples:
Export Network Settings to a File
ipconfig /all > networksettings.txt
In this example, all the information normally seen on screen after running ipconfig /all, is saved to a file by the name of networksettings.txt. It’s stored in the folder to the left of the command, the root of the D: drive in this case.
The > redirection operator goes between the command and the filename. If the file already exists, it’ll be overwritten. If it doesn’t already exist, it will be created.
Although a file will be created if it doesn’t already exist, folders will not. To save the command output to a file in a specific folder that doesn’t yet exist, first, create the folder and then run the command. Make folders without leaving Command Prompt with the mkdir command.
Export Ping Results to a File
ping 192.168.86.1 > "C:\Users\jonfi\Desktop\Ping Results.txt"
Here, when the ping command is executed, Command Prompt outputs the results to a file by the name of Ping Results.txt located on the jonfi user’s desktop, at C:\Users\jonfi\Desktop. The entire file path in wrapped in quotes because a space involved.
Remember, when using the > redirection operator, the file specified is created if it doesn’t already exist and is overwritten if it does exist.
The Append Redirection Operator
The double-arrow operator appends, rather than replaces, a file:
ipconfig /all >> \\server\files\officenetsettings.log
This example uses the >> redirection operator which functions in much the same way as the > operator, only instead of overwriting the output file if it exists, it appends the command output to the end of the file.
Here’s an example of what this LOG file might look like after a command has been exported to it:
The >> redirection operator is useful when you’re collecting similar information from different computers or commands, and you’d like all that data in a single file.
The above redirection operator examples are within the context of Command Prompt, but you can also use them in a BAT file. When you use a BAT file to pipe a command’s output to a text file, the exact same commands described above are used, but instead of pressing Enter to run them, you just have to open the BAT file.
Use Redirection Operators in Batch Files
Redirection operators work in batch files by including the command just as you would from the Command Prompt:
tracert yahoo.com > C:\yahootracert.txt
The above is an example of how to make a batch file that uses a redirection operator with the tracert command.
The yahootracert.txt file (shown above) will be created on the C: drive several seconds after executing the sample.bat file. Like the other examples above, the file shows everything Command Prompt would have revealed if the redirection operator wasn’t used.
Export Text Results in Terminal
Terminal provides an easy way to create a text file containing the contents of whatever you see in Command Prompt. Although the same redirection operator described above works in Terminal, too, this method is useful for when you didn’t use it.
To save the results from a Terminal window, right-click the tab you’re working in and select Export Text. You can then choose where to save the TXT file.
Thanks for letting us know!
Get the Latest Tech News Delivered Every Day
Subscribe
Windows 10, Windows 11, Windows 7, Windows 8, Windows Server, Windows Vista, Windows XP
- 15.11.2016
- 105 388
- 24
- 12.11.2022
- 72
- 68
- 4
- Содержание статьи
- Использование перенаправления выполнения команд
- Комментарии к статье ( 24 шт )
- Добавить комментарий
Командная строка — неизменный компонент любой операционной системы Windows, который берет свое происхождение прямиком от её предка — операционной системы MS-DOS. Данная программа имеет довольно широкие возможности, но сейчас мы поговорим о довольно примитивной вещи — сохранение (по факту — перенаправление) вывода командной строки в текстовый файл.
Почитать о том, как сделать тоже самое в Linux\BSD системах можно в этой статье.
Использование перенаправления выполнения команд
В случае, если необходимо просто сохранить все, что вывела командная строка в текстовый файл, то нужно после введенной команды добавить символ «>», что приведет к созданию текстового файла и весь вывод командной строки отправится туда. Пример:
ping 8.8.8.8 > C:\Logs\ping.txt
Обратите внимание, что командная строка при перенаправлении вывода может создать только текстовый файл, но не папку. Если вы введете несуществующий путь, то получите ошибку!
Как видно, командная строка не вывела никакого результата введенной команды на экран, но зато сохранила все в файл ping.txt. К сожалению, существуют ограничения перенаправления вывода, которые не позволяют одновременно отображать вывод и в окне командной строки, и сохранять их в текстовый файл. Однако, можно воспользоваться хитростью — сразу по завершению выполнения команды вывести содержимое текстового файла на экран с помощью команды type. Получится что-то следующее:
ping 8.8.8.8 > C:\Logs\ping.txt & type C:\Logs\ping.txt
Если требуется файл не записывать (существующий текстовый файл будет перезаписан), а дописывать (существующий текстовый файл будет дополнен), нужно вместо одного символа «>» использовать два — «>>».
ping 8.8.8.8 >> C:\Logs\ping.txt
В случае, если в текстовый файл нужно сохранить так же какой-то текст (например, в составе bat файла), то можно воспользоваться комбинацией с командой echo:
echo Имя компьютера: %computername% > C:\Logs\ping.txt
echo Проверка пинга до google.ru >> C:\Logs\ping.txt
ping google.ru >> C:\Logs\ping.txt
Содержимое получившегося текстового файла будет следующим:
Для того, чтобы вывод был только в текстовый файл (без показа в окне командной строки), нужно вставить первой строкой в bat файле команду @echo off
Очень часто приходилось слышать такое от людей, которые много времени проводят за администрированием и другими IT-забавами.
Я, за не очень долгий опыт реального администрирования пришел к обратному выводу. В консоли (командной строке) В Windows можно выполнять очень много разных операций, которые стандартными возможностями не выполняются или выполняются некорректно/неудобно/долго (нужное подчеркнуть)
Совсем недавно где-то на Хабре промелькнуло высказывание из серии «Не думал, что консоль в Виндах что-то может. Хотелось бы узнать об этом побольше».
Вот так и возникло желание написать небольшую статью про основные возможности консоли.
Про самые стандартные команды консоли можно узнать тривиальным способом:
заходим в cmd и пишем:
help
В сообщении я не буду подробно рассматривать команды типа copy (т.е. совсем тривиальные) так как о них можно прочитать введя команду типа
copy /?
1. Ввод-вывод
Рассмотреть же я попытаюсь команды, которые в основном хэлпе не написаны или описаны недостаточно подробно.
Для начала хотелось бы написать про операторы перенаправления ввода-вывода.
Таковыми операторами являются >, >>, <
.
Они нам могут пригодиться как минимум в трех ситуациях:
- Просмотр логов бат-файла
- Чтение длинных хелпов по консольным утилитам
- Подхватывание каких-либо переменных из лежащего рядом файла
При желании примеров можно придумать сколько угодно.
Из командной строки эти возможности реализуются следующим образом. Для того, чтобы перенаправить текстовые сообщения, выводимые какой-либо командой, в текстовый файл, нужно использовать конструкцию
команда > имя_файла
Если при этом заданный для вывода файл уже существовал, то он перезаписывается (старое содержимое теряется), если не существовал — создается. Можно также не создавать файл заново, а дописывать информацию, выводимую командой, в конец существующего файла. Для этого команда перенаправления вывода должна быть задана так:
команда >> имя_файла
С помощью символа < можно прочитать входные данные для заданной команды не с клавиатуры, а из определенного (заранее подготовленного) файла:
команда < имя_файла
Приведем несколько примеров перенаправления ввода/вывода.
1. Вывод встроенной справки для команды COPY в файл copy.txt:
COPY /? > copy.txt
2. Добавление текста справки для команды XCOPY в файл copy.txt:
XCOPY /? >> copy.txt
3. Ввод новой даты из файла date.txt (DATE — это команда для просмотра и изменения системной даты):
DATE < date.txt
2. FOR… DO
Второй командой, которую бы хотелось рассмотреть является FOR ... DO
Эта команда, так же как и многие другие достаточно подробно описана на сайте WindowsFAQ.
Я же хочу остановиться на двух наиболее важных пунктах
2.1 Переменные
- %~I
Расширение %I, которое удаляет окружающие кавычки («»). - %~fI
Расширение %I до полного имени пути. - %~dI
Замена %I именем диска. - %~pI
Замена %I на путь. - %~nI
Замена %I одним именем файла. - %~xI
Замена %I расширением имени файла. - %~sI
Замена путем, содержащим только короткие имена. - %~aI
Замена %I атрибутами файла. - %~tI
Замена %I временем модификации файла. - %~zI
Замена %I размером файла. - %~$PATH:I
Поиск в каталогах, перечисленных в переменной среды PATH, и замена %I полным именем первого найденного файла. Если переменная среды не определена или поиск не обнаружил файлов, модификатор выдает пустую строку.
Очевидно, что с помощью такого широкого набора переменных мы можем практически полностью отвязаться от индивидуальных особенностей конкретного экземпляра операционной системы и => избежать проблем например из-за того, что система встала на диск E:, а не на C:.
2.2 Работа с файлами
Чтобы произвести разбор файла, игнорируя комментарии, можно использовать следующую команду:
for /F "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k
Данная команда производит разбор каждой строки в файле Myfile.txt, игнорируя строки, начинающиеся с точки с запятой, и передает второй и третий элементы из каждой строки в тело цикла команды FOR. Элементы разделяются запятыми и/или пробелами. Тело инструкции FOR использует %i для получения второго элемента, %j для получения третьего элемента и %k для получения оставшихся элементов в строке. Если имена файлов содержат пробелы, их следует заключать в кавычки (например, «ИмяФайла»). Для использования кавычек необходима команда usebackq. В противном случае кавычки рассматриваются как определение символьной строки для разбора.
Переменная %i объявлена явно в инструкции FOR, а %j и %k объявлены неявно с помощью tokens=. С помощью tokens= можно указать до 26 элементов, если это не вызовет попытки объявить переменную с именем, большим буквы «z» или «Z».
Для разбора вывода команды с помощью помещения параметра МножествоИменФайлов в скобки можно использовать следующую команду:
for /F "usebackq delims==" %i IN (`set`) DO @echo %i
В данном примере перечисляются имена переменных среды в текущем окружении.
Пофантазируем?..
Итак, что нам дают всего эти две команды?
Ну вот возьмем для примера утилиту, которая лежит на сайте Microsoft и называется psexec. Она позволяет нам, зная логин и пароль машины, подключиться к ней и выполнить произвольные действия
в консольном режиме
Допустим, что у нас есть домен Windows и пароль доменного администратора.
Нам нужно подключиться ко всем машинам и удалить все файлы с маской *.mp3 с диска C:.
Для начала — как получить список всех компьютеров сети.
Я это делаю так:
FOR /F "skip=3 delims=\ " %%A IN ('NET VIEW') DO ECHO %%A>>c:\comps.txt
Имеем список всех компов в сети в столбик — как раз в том формате, который принимает psexec.
Правда, будут проблемы с русскими названиями компов, но это ведь не актуальная проблема, да?
Теперь про PsExec. Скачать его можно тут.
Синтаксис описан там же.
Нас интересует вот какая команда
c:\psexec.exe @c:\comps.txt -u username -p password -c MP3DELETE.bat
Содержимое .bat — файла:
cd /d c:\
for /r %%p in (*.mp3) do del %%p
Само собой, задача чисто абстрактная. Мне просто хотелось показать, что консоль в Windows на самом деле весьма могуча и позволяет красиво и удобно решать многие задачи.
А уж как здорово одним нажатием на bat-ник устанавливать пользователям софт в unattended-режиме…
Спасибо за внимание! Жду критики и предложений…
UPD.1 Спасибо большое maxshopen за инвайт и первую карму!
Благодаря ему и всем плюсующим с радостью перенес свою первую статью в свой первый блог — Windows.
UPD.2 Спасибо, Hint
copy con file.txt
Перенаправляет вывод с клавиатуры в файл (CTRL+Z — завершение ввода).
type file.txt >prn
Печает на принтере file.txt
UPD.3 Дамы и Господа!
Осознал, что можно на эту тему еще писать и писать.
У кого-нибудь есть какие-нибудь конкретные пожелания?
Или мне самому тему придумать?
Если пожелания есть, то пишите в кАментах.
On Windows 11 and 10, the ability to save the Command Prompt or PowerShell command output to a text file can be helpful in many situations. For instance, exporting the command output for analysis is convenient for troubleshooting a problem. You can also print the return of a command to a text file to save a configuration for documentation purposes and more.
You can always select and right-click the content to copy the output to the clipboard and paste it to a text file. However, the approach requires additional steps, which you can avoid with a single command using the redirected output to the file function.
This guide will walk you through the steps to save the command output to a text file on Command Prompt or PowerShell on Windows 11. (The instructions will also work on Windows 10.)
How to save command output to file using Command Prompt
To save the command output to a text file with Command Prompt, use these steps:
- Open Start.
- Search for Command Prompt.
- Right-click the top result and select the Run as administrator option.
- Type the following command to save the output to a text file and press Enter: YOUR-COMMAND > C:\PATH\TO\FOLDER\OUTPUT.txt
In the command, change «YOUR-COMMAND» with your command and «c:\PATH\TO\FOLDER\OUTPUT.txt» with the path and file name to store the output.
This example exports the system technical specifications to the «laptop_tech_specs.txt» file: systeminfo > C:\laptop_tech_specs.txt
- (Optional) Type the following command to save the output and view results on the screen and press Enter: YOUR-COMMAND > C:\PATH\TO\FOLDER\OUTPUT.txt | type C:\PATH\TO\FOLDER\OUTPUT.txt
In the command, change «YOUR-COMMAND» with your command and «c:\PATH\TO\FOLDER\OUTPUT.txt» with the path and filename to store and view the output.
All the latest news, reviews, and guides for Windows and Xbox diehards.
This example exports the system technical specifications to the «laptop_tech_specs.txt» file and prints the information on the screen: systeminfo > C:\laptop_tech_specs.txt | type C:\laptop_tech_specs.txt
- Quick tip: If you have problems viewing the file, you can use the type c:\PATH\TO\FOLDER\OUTPUT.txt command after step No. 3.
Once you complete the steps, the command output will be saved into the text file, which you can review or share with tech support.
How to save command output to file using PowerShell
To save the command output to a text file with PowerShell on Windows 11 or Windows 10, use these steps:
- Open Start.
- Search for PowerShell.
- Right-click the top result and select the Run as administrator option.
- Type the following command to save the output to a text file and press Enter: YOUR-COMMAND | Out-File -FilePath C:\PATH\TO\FOLDER\OUTPUT.txt
In the command, change «YOUR-COMMAND» with your command and «c:\PATH\TO\FOLDER\OUTPUT.txt» with the path and file name to store the output.
This example exports the IP address configuration to the «laptop_network_settings.txt» file: ipconfig | Out-File -FilePath C:\laptop_network_settings.txt
- (Optional) Type the following command to view the saved output on the screen and press Enter: Get-Content -Path C:\PATH\TO\FOLDER\OUTPUT.txt
In the command, change «c:\PATH\TO\FOLDER\OUTPUT.txt» with the path and file name with the output content.
This example shows the contents of the «laptop_network_settings.txt» file: Get-Content -Path C:\laptop_network_settings.txt
After you complete the steps, PowerShell will save the result into a text file on your specified location.
More Windows resources
For more helpful articles, coverage, and answers to common questions about Windows 10 and Windows 11, visit the following resources:
- Windows 11 on Windows Central — All you need to know
- Windows 10 on Windows Central — All you need to know