Как отобразить содержимое текстового файла в CMD?


227

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



Если один из этих ответов решил вашу проблему, отметьте ответ.
Майкл Ягер

Возможный дубликат
поиска

Ответы:


321

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

more filename.txt

Взгляните на утилиты GNU для Win32 или скачайте ее :


Как это похоже на tail -f? Хвост петли навсегда. Как ты повторил -f этого?
Эли Саад

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

174

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

Пример -

type abc.txt

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


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

23

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

xxxx.txt > con

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

type xxxx.txt

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

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


7

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

more filename.txt

2
Добро пожаловать в StackOverflow и спасибо за попытку помочь. Пожалуйста, объясните, как версия more из windows может использоваться для автоматического просмотра вновь поступающих строк в текстовом файле. Это сделало бы ваш ответ более непосредственным образом связанным с вопросом OP, то есть продемонстрировало бы, что OP хочет совместимости tail -f.
Юннош

4

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

powershell -nologo "& "Get-Content -Wait c:\logFile.log -Tail 10"

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

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

powershell -nologo "& "Get-Content -Wait %1 -Tail %2"

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

2

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

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

Get-Content c:\scripts\test.txt | Select-Object -last 5

Источник: использование командлета Get-Content


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

1

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



1

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

@echo off
:start
cls
type myfile.txt
goto start

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


Это не повторяет функциональность хвоста.
Прит Сангха

1

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

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

Последний вариант использует. for for /f "usebackq delims=" %%A in (filename) do (echo.%%A) Это будет идти для каждой строки и отображать ее содержимое. Это эквивалент typeкоманды, но это еще один метод чтения содержимого.

Если вы спрашиваете, что использовать, используйте moreкоманду, поскольку она сделает паузу.


0

Если вы хотите отобразить, например, все имя файла .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) - Тип: Вывести содержимое файла

Ps: последняя команда канала указывает файл% temp% и выводит совокупное содержимое. Если вы хотите скопировать / вставить некоторую документацию, просто откройте файл stdout.txt в textpad.

Добрый день.


Пожалуйста, используйте блочный код `` `, чтобы вставить ваш код, так как это облегчит чтение.
Anic17

-1
tail -3 d:\text_file.txt

tail -1 d:\text_file.txt

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


2
нет, tailвсе еще не стандартная команда windows. Обычно это часть аддона, как Cygwin, GNU или другие.
Стефан

Это не очень хороший ответ, вы просто говорите, что он реализован в Windows, но нет, пожалуйста, проверьте свою информацию, прежде чем отвечать.
Anic17
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.