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

  • 15.11.2016
  • 91 770
  • 24
  • 12.11.2022
  • 69
  • 65
  • 4
Как сохранить в текстовый файл вывод командной строки Windows

Командная строка - неизменный компонент любой операционной системы 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
Была ли эта статья Вам полезна?

Комментарии к статье (24)

    • diller

    Каким образом используя ping и запись результатов писать дату в время каждой строки пинга в виде
    02.11.2023 13:37:13 Ответ от 8.8.8.8. число байт=32 время<1 TTL=128

    • Владимир

    А как сохранить окно после выполнения команды TRACERT не экране ПК. Оно исчезает как только трассировка достигает заданного адреса?

    К примеру задан адрес трассировки TRACERT 8.8.8.8.
    Трассировка закончиласть и окно программы исчезает

    • Нужно всего лишь запускать данную программу из Командной строки.

    • Гость

    создаётся пустой файл с указанным названием

    • Пример выполняемой команды, которая создает "пустой файл с указанным названием", можно получить?

    • Гость

    echo Имя компьютера: %computername% > C:\Logs\ping.txt
    echo Проверка пинга до google.ru > C:\Logs\ping.txt
    ping google.ru > C:\Logs\ping.txt

    > перезапишет предыдщие строки, после первого > надо использовать >>

    • Тимур

    Добрый день!
    Спасибо, отличная статья, помогло!
    Подскажите, а как победить то, что русские символы некорректно выводятся в текстовый файл? Как выбрать кодировку?

      • Гость

      Для открытия текстового файла используйте программу notepad++. Там уже после открытия можно поменять кодировку

    • Гость

    не рассказывается как выводить переменные

    • rekill

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

      • Recluse

      Если у Вас программа в Visual Studio, то есть, вы обладаете её исходными кодами - то Вам нужно модифицировать её исходный код, добавив помимо вывода чисел и текста на экран, сохранение в текстовый файл.

      • Ursus

      Можно сделать .bat файл с текстом:
      Путь к программе\ИмяПрограммы.exe > Путь к логу\ИмяЛога.txt (Файл будет пересоздаваться каждый раз)
      Или:
      Путь к программе\ИмяПрограммы.exe >> Путь к логу\ИмяЛога.txt (Вывод будет дописываться в файл)

    • Александр

    А ещё такой вопрос. В Файл всё Сохраняется нечитабельно, можно исправить с помощью той же командной строки?

      • Recluse

      Самый простой вариант, который без проблем подойдет для большинства случаев - это сперва выполнить команду chcp 855. Единственный минус - при этом все будет на английском.

      • Михаил

      в командной строке вместо расширения .txt ставите .doc и текст будет читаемым.

    • Александр

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

      • Recluse

      Можно, но для этого нужно будет лучше написать отдельную статью. Как руки дойдут - обязательно сделаю!

    • Recluse

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

    Если же речь идет про переменные, вроде %COMPUTERNAME%, то их можно найти выполнив в командной строке команду set, либо по запросу "Переменные среды" в интернете.

    • Павел

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

    • Recluse

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

    ping 8.8.8.8 > E:\%COMPUTERNAME%.txt
    • Павел

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

    • Recluse

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

    ping 8.8.8.8 > Z:\test.txt

    Если под общим диском подразумевается сетевая "шара", то и тут нужно делать все тоже самое, например:

    ping 8.8.8.8 > \\server\upload\test.txt

    • Руслан

    А возможно ли записать файл с результатом на общий диск?

Добавить комментарий для Recluse

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Напоминаем Вам, что Ваше сообщение будет опубликовано только после проверки администратором сайта. Обычно это занимает 1-2 рабочих дня.