Cmd прочитать текстовый файл

Обновлено: 04.07.2024

Я хочу отобразить содержимое текстового файла в окне CMD. Кроме того, я хочу видеть новые строки, которые добавляются в файл, например tail -f команда в Unix.

Вы можете использовать more команду. Например:

Как это похоже на tail -f? Хвост петли навсегда. Как ты повторил -f этого? Это не отвечает на вопрос. Не уверен, почему его так высоко оценили. OP искал 2 вещи - альтернативу windows для cat и альтернативу tail -f. Если вы собираетесь установить утилиты GNU для Windows, вы можете использовать эти вещи.

Мы можем использовать команду «type» для просмотра содержимого файла в cmd.

Более подробную информацию можно найти ЗДЕСЬ .

Мне нравится этот ответ, потому что он не интерактивный. more показывает N экранов за раз, когда вам нужно кликнуть

Я не думаю, что есть встроенная функция для этого

Это открывает файлы в текстовом редакторе по умолчанию в Windows .

Это отображает файл в текущем окне. Может быть, у этого есть параметры, которые вы можете использовать .

Здесь есть похожий вопрос: пакетный скрипт CMD.EXE для отображения последних 10 строк из текстового файла. Итак, есть команда «more» для отображения файла из данной строки, или вы можете использовать утилиты GNU для Win32, что предложил Брайанф в его ссылке.

Вы можете использовать команду «more» для просмотра содержимого файла:

Используя одну команду PowerShell для получения окончания файла:

Это относится к PowerShell 3.0 и новее.

Другой вариант - создать файл с именем TAIL.CMD с этим кодом:

Это работает, но это слишком медленно, так как запуск PowerShell может занять 2 или 3 секунды.

Для этого вы можете использовать более продвинутую оболочку командной строки Microsoft под названием « Windows PowerShell ». Он должен быть стандартным на последних версиях Windows, но вы можете скачать его с Microsoft, если он еще не установлен.

Чтобы получить последние пять строк в текстовом файле, просто прочитайте файл, используя Get-Content , а затем Select-Object выберите последние пять элементов / строк для вас:

Ответ @Eyal более уместен при вызове из cmd, и в коде лучше использовать Tail, чем пускать в Select-Object. Вы не можете делать -Подождать, пока вы выбираете объект. Это не то, что запрашивает OP.

В Windows нет встроенной опции. Для постоянного мониторинга журналов вы можете использовать это бесплатное приложение BareTailPro .

Утилиту TAIL можно получить из средств Windows Server 2003 Resource Kit .

Только комментарии должны быть опубликованы как комментарии

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

Это будет повторяться до тех пор, пока вы не закроете окно cmd.

Вы можете сделать это несколькими способами:

Один - это type команда: type filename Другой - это more команда: more filename С помощью этого more вы также можете сделать это: type filename | more

Последний вариант использует. for for /f "usebackq delims row">

Если вы хотите отобразить, например, все имя файла .config (или .ini) и содержимое файла в одном документе для справки пользователя (и под этим я подразумеваю пользователя, не знающего команду оболочки, т.е. 95% из них), вы можете попробовать это:

FORFILES / M * myFile.ini / C "cmd / c echo Имя файла: @file >>% temp% \ stdout.txt && type @path >>% temp% \ stdout.txt && echo. >>% temp% \ stdout.txt "| введите% temp% \ stdout.txt

Объяснение: - ForFiles: цикл в каталоге (и дочернем элементе и т. Д.) Для каждого критерия соответствия файла - возможность вернуть текущее имя файла, являющегося процессом (@file) - возможность вернуть полный путь файла, являющегося процессом (@path) - Тип: Вывести содержимое файла

Я хочу, чтобы отобразить содержимое текстового файла в окне cmd. Кроме того, я хочу увидеть новые строки, добавленные в файл, как tail -f команда в unix.

можно использовать . Например: more filename.txt

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

больше информации можно найти здесь

Я не думаю, что для этого есть встроенная функция

это открывает файлы в текстовом редакторе по умолчанию в windows.

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

здесь есть аналогичный вопрос:CMD.EXE пакетный скрипт для отображения последних 10 строк из txt файла Таким образом, есть команда" больше " для отображения файла из данной строки, или вы можете использовать утилиты GNU для Что предложил брайанф в своей ссылке.

использование одной команды PowerShell для получения окончания файла:

применяется к powershell 3.0 и новее

другой вариант-создать файл с именем TAIL.CMD с этим кодом:

для этого вы можете использовать более продвинутую оболочку командной строки Microsoft под названием"Windows PowerShell."Он должен быть стандартным для последних версий Windows, но вы можете загрузите его из Microsoft если вы еще не установили его.

чтобы получить последние пять строк в текстовом файле, просто прочитайте файл с помощью Get-Content , потом Select-Object выберите последние пять элементов / строк для вас:

вы можете использовать команду "больше", чтобы увидеть содержимое файла: more filename.txt

нет встроенной опции availble с windows. Для постоянного мониторинга журналов вы можете использовать это бесплатное приложение BareTailPro

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

что будет повторяться вечно, пока вы не закроете окно cmd

Я предполагаю, что это было добавлено в Windows cmd.ехе в какой-то момент.

Вторая часть поста, в котором будут рассмотрены основные команды для работы с файлами. В первой части было рассказано про то, как удалить файл и каталог используя cmd.exe, если Вы не читали, то советую прочитать. В этом посте будут рассмотрены команды, которые позволят пользователю…

  • Перемещать файлы.
  • Переименовывать файлы.
  • Выводить содержимое файлов в консоль.
  • Записывать в файл (txt) результат выполнения команды.

Как всегда, все команды будут представлены Вашему вниманию в сопровождении коротких, но ясных описаниях, а так же будут прилагаться «Пошаговые» скриншоты.

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

Как переместить файл через консоль?

Для перемещения файлов используется команда под названием «MOVE». Что бы переместить файл из корня диска «C:\ Move.txt» в папку, в моём случаи это «С:\Test_Move» пишем в консоль:

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

Результат выполнения команды. Файл «Move.txt» был перемещён в папку «Test_Move»

Если Вам нужно переместить все файлы с конкретным расширением, то в этом случаи стоит писать так:

Как переместить файл через консоль?

Для примера я создал 3 файла «Move_1.txt, Move_2.txt и Move_3.txt» Как видно из скриншота выше, все три файла были перемещённых. В этом можно убедится не закрывая консоль.

Для проверки используем команду «DIR»

Как переместить файл через консоль?

Как переместить файл через консоль?

Если ввести символ «Y» то файл будет перезаписан. При этом содержимое уже имеющегося файла в каталоге «C:\Test_Move\» будут потеряны.

Если ввести символ «N» файл не будет перемещён.

Если ввести «ALL» то будут перемещены и перезаписаны все файлы с конкретным расширением. При этом, также, содержимое файлов в директории «C:\Test_Move\» будут потеряны.

Примечание: За место «ALL» можно просто ввести букву «А» результат будет додже.

Как переместить файл через консоль?

Что бы отключить предупреждения используется ключик «/Y»

Как переместить файл через консоль?

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

Как переименовать файл через cmd.exe?

Для того, чтобы переименовать существующий файл используется команда «RENAME» Я создал файл с именем «test.txt» в корне диска «С:\» что бы его переименовать, скажем в «NEW_Name.txt» пишем в консоли.

Как переименовать файл через cmd.exe?

Файл «test.txt» будет переименован.

Примечание: Команду «RENAME» можно писать короче, просто «REN» от этого результат не изменится.

Можно сменить расширения у всех файлов в каталоге, например с «txt» на «cmd». Для этого делаем так:

Как переименовать файл через cmd.exe?

Теперь уже в знакомой нам папке «Test_Move» все 3(три) файла приобретут расширение «cmd» за место «txt»

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

Если появилась необходимость просмотреть содержимое файла прямо в cmd. Для этого пользуемся командой «TYPE» Я создал файл и написал в нём адрес своего блога. Теперь попробуем просмотреть данный файл из консоли, не запуская его обычном, привычным образом.

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

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

Для этого пишем так:

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


Для примера взял текст с первого попавшегося забугорного сайта.

В конце добавляем «| more» таким образом содержимое файла будет выводится не полностью а отрывками, чтобы просмотреть следующею часть файла жмём «Enter»

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

Для примера запишем в файл результат команды «DIR» В консоль пишем:

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

Обратите внимание на символ «>» он то и играет здесь главную роль. В итоге появится файл на диске «C:\» с именем «Save.txt» куда будет записан результат выполнения команды.

Если Вам понадобится записать результат команды «DIR» ещё раз, то файл «Save.txt» будет перезаписан и ранние содержимое файла будет удалено!

Что бы этого избежать и просто добавить новый результат не удаляя старый, стоит использовать символ «>» два раза, то есть вот так:

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

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

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











Здесь хотелось бы заметить, что проблема с кодировками будет при написании скрипта, на любом из родных для системы языков - cmd, vbscript, jscript.

Можно только сожалеть об отсутствии и решить эту проблему одним из следующих способов:
1. установить один из пакетов, содержащих достаточный набор команд, чтобы быть также уверенным как в командной строке unix, например, UnixUtils, Cygwin, GnuWin32
Иногда это не возможен из-за политик компаний, запрещающих самостоятельно устанавливать дополнительное ПО.
2. использовать PowerShell
Хотя все идет к тому, что PowerShell будет предустановлен на всех Windows, однако еще много систем на которых его нет. А установить нельзя.
3. написать собственный скрипт
Это уже выход, если 1 и 2 противопоказаны. Хотя есть свои недостатки (например упомянутая проблема - кодировки).

Я решил попробовать (частично или полностью) эмулировать работу некоторых важных команд обработки текстовых файлов средствами самой командной строки. Just for fun!
.
1. Количество строк в файле
Оказывается почти точно определить количество строк в файле очень просто:

И вот пример. Данная команда выводит немного дополнительной информации

Сказав "почти точно", я имел в виду, то что иногда результаты отличаются от видимого. Но этим грешат многие команды. Например, wc -l отбрасывает последнюю строку, если она не заканчивается переводом строки. В случае с find /c /v "" наблюдается расхождение с действительностью, если в конце файла несколько (более 2) пустых строк. По-видимому разные программы работают по разному - одни считают количество строк, другие количество переводов строк. И вследствие этого они могут различаться. Поэтому я рекомендую использовать следующее решение.

Команда выведет только размер файла в строках. И это самый точный способ узнать количество строк в файле.

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

.
2. Прочитать n последних строк в файле. Эмуляция команды tail
Оказывается, это очень простая задача:
1. узнать N - количество строк в файле;
2. вывести n строк, пропустив N-n:

.
Код на PowerShell:

.
3. Вывод нескольких начальных строк файла. Эмуляция команды head
Этот эмулятор я написал первым, хотя он не самый простой в реализации. Возможно, существуют варианты лучше, но, к сожалению, я их не нашел и, поэтому, я использовал "хак" с временным файлом. Суть его в том, что вначале создается временный файл, который содержит n-ое количество следующих строк:

то есть все номера требуемых строк.

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

.
И на последок, традиционно, код на PowerShell:

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

хеад и тайл в одном флаконе

smaharbA, как во флаконе дело обстоит с пустыми строками в файле?

  • Rumata
  • Разработчик
  • Неактивен











smaharbA
alexii
Коллеги. Во флаконе только head. Там нет tail.

есть там тайл - смотрите внимательно

alexii - не знаю, должно быть вроде как нормально, поправьте

smaharbA, я имел в виду, что разбор «for /f» пропускает пустые строки.

  • Rumata
  • Разработчик
  • Неактивен











Согласен. Но это не совсем то. В отличие от tail, more +N пропускает N строк из потока. И результат совершенно не предсказуем для потока в конвейере.

  • Rumata
  • Разработчик
  • Неактивен











разбор «for /f» пропускает пустые строки

Но вот посмотрите на этот пример:

  • greg zakharov
  • Разработчик
  • Неактивен

Код на PowerShell:
echo (get-content -path %windir%.

Слишком сложно, не находите?

А если нужно передать команду PoSh, то будет примерно так:

  • blackfox.blacktail
  • Участник
  • Неактивен
  • Рейтинг : [ 0 | 0 ]

Добрый день.
Использовал пример для подсчета количества строк в файле:

13 Ответ от smaharbA 2013-09-01 10:37:46

чем не устраивает ?

14 Ответ от blackfox.blacktail 2013-09-03 10:22:45

  • blackfox.blacktail
  • Участник
  • Неактивен
  • Рейтинг : [ 0 | 0 ]

2smaharbA
Если есть пустая строка, с символом SUB, её тоже считает.
Проще избавиться от этого символа, что я и сделал.
(При использовании copy, нужно поставить ключ /B)

15 Ответ от greg zakharov 2013-09-03 15:52:47

  • greg zakharov
  • Разработчик
  • Неактивен

EQU

Если есть пустая строка, с символом SUB, её тоже считает.

На оном спотыкается и Ruby (версия старая, до установки последней дело никак не доходит).

16 Ответ от smaharbA 2013-09-03 17:27:15

17 Ответ от greg zakharov 2013-10-13 10:27:59 (изменено: greg zakharov, 2013-10-13 10:28:42)

  • greg zakharov
  • Разработчик
  • Неактивен

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

head без временных файлов.

Может быть, но сколько бы не пробовал на выходе одинаковый результат. Может у меня на Win2k3 find специфический?

18 Ответ от Мальчик-гей 2013-10-17 09:04:37

  • Мальчик-гей
  • Участник
  • Неактивен

Может быть, но сколько бы не пробовал на выходе одинаковый результат.

Коллега smaharbA прав:

19 Ответ от greg zakharov 2013-10-17 11:51:48

  • greg zakharov
  • Разработчик
  • Неактивен

Смысл то один и тот же - количество строк в файле. А отбрасывать из вывода имя файла - дело вкуса. Так что это скорее "не равноценно", нежели "не эквивалентно". Или Вы русский язык как-то на свой лад интерпретируете?

20 Ответ от Rumata 2013-10-17 13:17:45

  • Rumata
  • Разработчик
  • Неактивен











greg zakharov
В данном случае smaharbA прав. Результат обеих команд одинаковый, но вывод - разный. Это как в JavaScript

21 Ответ от Мальчик-гей 2013-10-21 13:38:14

  • Мальчик-гей
  • Участник
  • Неактивен

Так что это скорее "не равноценно", нежели "не эквивалентно". Или Вы русский язык как-то на свой лад интерпретируете?

Дорогой коллега! Я понимаю эквивалентность вполне академически, как отношение, обладающее свойствами рефлексивности, симметричности и транзитивности. И в этом смысле на одном и том же классе объектов могут быть заданы различные отношения эквивалентности, так что объекты эквивалентные в одном отношении не будут эквивалентны в другом. Вспомните хотя бы конгруэнтность и подобие геометрических фигур. В рамках же этой темы требовалась более сильная эквивалентность, с совпадением формата вывода результатов, так как всё началось с

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

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

22 Ответ от greg zakharov 2013-10-21 15:07:13 (изменено: greg zakharov, 2013-10-21 16:40:40)

  • greg zakharov
  • Разработчик
  • Неактивен

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

Простите, у Вас филологическое образование? Или Вы страдаете дислексией, что не вполне можете разуметь написанное? Тем паче, что

Я понимаю эквивалентность вполне академически, как отношение, обладающее свойствами рефлексивности, симметричности и транзитивности.

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

undefined == null // true
undefined === null // false

Не приплетайте сюда, пожалуйста, javascript. null и undefined - это два тривиальных типа данных, каждый из которых определяет только одно значение. Однако, заявлять об их эквивалентности, как-то однако. Считается, что у значение null - объектный тип. При всем этом значение null уникально и отличается от любых других. Если переменная равна null, значит в ней не содержится допустимого объекта (массива, числа, строки и т.д.) undefined же возвращается же либо при обращении к переменной, которй никогда не присваивалось значение, либо к свойству объекта которого не существует. При этом null и undefined не эквивалентны друг другу, несмотря на то, что оператор эквивалентности считает их равными, - это написано в любой книге по javascript. Это можно также утверждать и потому, что в отличии от null значение undefined не является зарезервированным словом. Если будет время, почитайте на досуге, например, Дэвида Флэнегана, если точно помню и не делайте скоропалительных выводов.
Резюмирую, несмотря на общую схожесть многих языков, абсолютизировать понятие эквивалентности не стоит, - если не каждый, то некоторые из языков вкладывают собственное понятие в "эквивалентность", причем будь то естественный язык или язык программирования. То, что выдает в командном языке одинаковый результат, но лишь с некоторым "мусором", знаете ли еще не повод утверждать что заяц - это волк и вообще не млекопитающее, а аргументы г-на Мальчик-гей не убедительны, ибо таким образом можно доказать все что угодно, в том числе что и Ленин был грибом.

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