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

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

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

Командная строка

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

Вывести результат выполнения команды командной строки в текстовый файл можно следующими способами:

  1. Первый вариант — простой вывод в файл. При этом если файл уже существует, он будет перезаписан, а в окне консоли вывод команды не отобразится:
    команда > путь_к_файлу
    Пример вы можете увидеть на скриншоте ниже. Команда для вывод в текстовый файл в командной строке
  2. Второй метод не затирает предыдущее содержимое файла, если оно уже есть, а добавляет вывод команды к уже имеющемуся в файле содержимому. Как и в предыдущем случае в окне консоли результат отображаться не будет:
    команда >> путь_к_файлу
    Например, для команд приведенных на скриншоте, результат будет записан в файл дважды. Добавление результатов вывода к текстовому файлу в командной строке
  3. Если требуется вывод в файл с одновременным выводом в окне командной строки, можно использовать следующий подход:
    команда >> путь_к_файлу | type путь_к_файлу
    Вывод в текстовый файл и в консоль

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

Windows PowerShell

Если команды выполняются в PowerShell, вы можете использовать команду Tee-Object следующими способами:

  1. Вывод результатов команды в текстовый файл и консоль с перезаписыванием данных в файле:
    команда | tee путь_к_файлу
    Вывод в текстовый файл с помощью Tee Object
  2. Вывод результатов команды в файл с добавлением вывода к имеющемуся содержимому файла:
    команда | tee -append путь_к_файлу
  3. Если нужно вывести в файл результаты выполнения ряда команд, включая сообщения об ошибках, вы можете использовать следующих подход:
    Start-Transcript -Path "путь_к_файлу"
    ваши команды
    Stop-Transcript
    Вывод в текстовый файл с помощью Start-Transcript

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

Комментарии (5) к Как вывести результат выполнения команды в файл в Windows

  • victor

    1)Powershell
    Зачем какой-то tee, если есть очень простой оператор >,>>?
    ping 8.8.8.8 >> f:\debug.txt
    2)Для cmd.exe есть вывод команд через doskey
    doskey /history > f:\debug.txt
    3)Зачем нужен Start-Transcript,если можно по-другому:
    @(ping 8.8.8.8;$PSVersionTable.PSVersion;get-executionpolicy -l) >> f:\debug.txt

    Ответить

  • Sentaro

    Автор! Давая подобные советы, нелишним будет уточнить, для какой «командной строки», какого приложения действуют подобные советы.
    Для оболочки командной строки cmd.exe, кроме потока StdOUT, перенаправление которого вы описали, есть ещё поток StdERR, тема которого совсем не раскрыта, а ведь некоторые консольные приложения, например, wget, на него даже справку об использовании отправляют.
    Поэтому предлагаю вам расширить свои познания в области pipes cmd.exe и дополнить статью необходимой информацией.

    Кстати, «Если требуется вывод в файл с одновременным выводом в окне командной строки», то чтобы успевать отслеживать экранный вывод, будет эффективнее использовать следующий подход:

    команда >> путь_к_файлу | more путь_к_файлу

    Пейджер more ещё со времён [MS]DOS жалкая пародия на UNIX оригинал, поэтому, тем кому важен функционал, неплохим вариантом будет использование стороннего пейджера less, например.

    Ответить

    • Frost MRT

      команда >> путь_к_файлу | more путь_к_файлу
      А если у меня допустим команда выглядит следующим образом «Call имя_файла.bat > новый_файл_01.log | more новый_файл_01.log»
      В итоге создается «новый_файл_01.log» в него записывается содержимое из батника который я вызвал через call, но содержимое файла «новый_файл_01.log» не выводится обратно в консоль командой more.
      Вопрос почему команда more не выводит в консоль содержимое файла «новый_файл_01.log», хотя файл не пустой и по мере работы бат файла заполняется в реальном времени?

      Ответить

  • Роман

    А как вывести в лог файл не только выполненные команды, но и ошибки выполнения команд в режиме до записи в файл?

    Часто встречаю команду 2>&1 которая не работает

    Ответить

  • Роман

    Как в итоге записать поток дескриптора 1 и 2 в файл?
    например команда:
    copy c:\text1.txt d:\text1.txt 1>> c:\log.log — Дозаписывает удачное выполнение команд
    copy c:\text1.txt d:\text1.txt 2>> c:\log.log — Дозаписывает ошибки выполнение команд

    А как Дозаписывать И 1 и 2 в один и тот же файл ???

    Ответить

Оставить комментарий

Интересное
Список инструкций Windows 11 Windows 10 Подписаться