Làm cách nào để hiển thị nội dung tệp văn bản trong CMD?


227

Tôi muốn hiển thị nội dung của tệp văn bản trong cửa sổ CMD. Ngoài ra, tôi muốn xem các dòng mới được thêm vào tệp, như tail -flệnh trong Unix.



Nếu một trong những câu trả lời này đã giải quyết được vấn đề của bạn, vui lòng đánh dấu câu trả lời.
Michael Yaeger

Câu trả lời:


321

Bạn có thể sử dụng morelệnh. Ví dụ:

more filename.txt

Hãy xem các tiện ích GNU cho Win32 hoặc tải xuống :


Làm thế nào là điều này tương tự như đuôi -f? đuôi -f vòng mãi mãi. Làm thế nào bạn sao chép -f của nó?
Elie Saad

2
Điều này không trả lời câu hỏi. Không chắc chắn tại sao đánh giá của nó rất cao. OP đã tìm kiếm 2 thứ - một cửa sổ thay thế cho mèo và một thay thế cho đuôi -f. Nếu bạn định cài đặt các tiện ích GNU cho windows, thì bạn có thể sử dụng những thứ đó.
gburton

174

Chúng ta có thể sử dụng lệnh 'type' để xem nội dung tệp trong cmd.

Thí dụ -

type abc.txt

Thông tin chi tiết có thể được tìm thấy TẠI ĐÂY .


Tôi thích câu trả lời này vì nó không tương tác. morehiển thị N màn hình tại một thời điểm mà bạn phải nhấp qua
user2023861

23

Tôi không nghĩ rằng có một chức năng tích hợp cho điều đó

xxxx.txt > con

Thao tác này sẽ mở các tệp trong trình soạn thảo văn bản mặc định trong windows ...

type xxxx.txt

Điều này sẽ hiển thị các tập tin trong cửa sổ hiện tại. Có lẽ điều này có thông số bạn có thể sử dụng ...

Có một câu hỏi tương tự ở đây: tập lệnh bó CMD.EXE để hiển thị 10 dòng cuối cùng từ tệp txt Vì vậy, có một lệnh "thêm" để hiển thị một tệp từ dòng đã cho hoặc bạn có thể sử dụng Tiện ích GNU cho Win32 mà bryanph đề xuất trong liên kết của mình.


7

Bạn có thể sử dụng lệnh 'more' để xem nội dung của tệp:

more filename.txt

2
Chào mừng bạn đến với StackOverflow và cảm ơn vì đã cố gắng giúp đỡ. Vui lòng giải thích cách sử dụng phiên bản windows nhiều hơn để tự động xem các dòng mới đến trong tệp văn bản. Điều đó sẽ làm cho câu trả lời của bạn liên quan trực tiếp hơn đến câu hỏi của OP, tức là thể hiện tính tương thích "đuôi -f" mà OP muốn.
Yunnosch

4

Sử dụng một lệnh PowerShell duy nhất để truy xuất tệp kết thúc:

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

Nó áp dụng cho PowerShell 3.0 và mới hơn.

Một tùy chọn khác là tạo một tệp có tên TAIL.CMD với mã này:

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

Nó hoạt động, nhưng quá chậm, vì PowerShell có thể mất 2 hoặc 3 giây để bắt đầu.
Anic17

2

Để thực hiện việc này, bạn có thể sử dụng trình vỏ dòng lệnh nâng cao hơn của Microsoft có tên là " Windows PowerShell ." Nó phải đạt tiêu chuẩn trên các phiên bản Windows mới nhất, nhưng bạn có thể tải xuống từ Microsoft nếu bạn chưa cài đặt nó.

Để có được năm dòng cuối cùng trong tệp văn bản, chỉ cần đọc tệp bằng cách sử dụng Get-Content, sau đó Select-Objectchọn ra năm mục / dòng cuối cùng cho bạn:

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

Nguồn: Sử dụng Cmdlet Get-Content


Câu trả lời của @Eyal phù hợp hơn khi được gọi từ cmd và mã sử dụng Tail tốt hơn so với đường ống vào Chọn-Object. Bạn không thể làm -Wait trong khi thực hiện Chọn đối tượng là tốt. Đây không phải là những gì OP yêu cầu.
Elie Saad

1

Không có tùy chọn tích hợp sẵn có với Windows. Để liên tục theo dõi nhật ký, bạn có thể sử dụng ứng dụng miễn phí BareTailPro này .



1

Nếu bạn muốn nó hiển thị nội dung của tệp trực tiếp và cập nhật khi tệp bị thay đổi, chỉ cần sử dụng tập lệnh này:

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

Điều đó sẽ lặp lại mãi mãi cho đến khi bạn đóng cửa sổ cmd.


Điều này không tái tạo chức năng của đuôi.
Preet Sangha

1

Bạn có thể làm điều đó trong một số phương pháp:

Một là typelệnh: type filename Một là morelệnh: more filename Với morebạn cũng có thể làm điều đó:type filename | more

Tùy chọn cuối cùng là sử dụng for for /f "usebackq delims=" %%A in (filename) do (echo.%%A) Điều này sẽ đi cho từng dòng và hiển thị nội dung của nó. Đây là một typelệnh tương đương , nhưng nó là một phương pháp khác để đọc nội dung.

Nếu bạn đang hỏi nên sử dụng cái gì, hãy sử dụng morelệnh vì nó sẽ tạm dừng.


0

Nếu bạn muốn hiển thị ví dụ tất cả tên tệp .config (hoặc .ini) thành một tài liệu để người dùng tham khảo (và điều này có nghĩa là người dùng không biết lệnh shell tức là 95% trong số họ), bạn có thể thử điều này:

FORFILES / M * myFile.ini / C "cmd / c echo Tên tệp: @file >>% temp% \ stdout.txt && type @path >>% temp% \ stdout.txt && echo. >>% temp% \ stdout.txt "| nhập% temp% \ stdout.txt

Giải thích: - ForFiles: lặp trên một thư mục (và con, v.v.) mỗi tiêu chí đáp ứng tệp - có thể trả về tên tệp hiện tại đang được xử lý (@file) - có thể trả về tệp đường dẫn đầy đủ đang được xử lý (@path) - Loại: Xuất nội dung tập tin

Ps: Lệnh ống cuối cùng đang trỏ tệp% temp% và xuất nội dung tổng hợp. Nếu bạn muốn sao chép / dán vào một số tài liệu, chỉ cần mở tệp stdout.txt trong bàn phím văn bản.

Ngày tốt.


Vui lòng sử dụng mã khối `` `để dán mã của bạn, vì nó sẽ dễ đọc hơn.
Anic17

-1
tail -3 d:\text_file.txt

tail -1 d:\text_file.txt

Tôi cho rằng điều này đã được thêm vào Windows cmd.exe tại một số điểm.


2
không, tailvẫn không phải là một lệnh windows tiêu chuẩn. Thông thường, nó là một phần của một addon như cygwin, GNU hoặc các phần khác.
Stephan

Đây không phải là một câu trả lời hay, bạn chỉ nói rằng điều này đã được triển khai trong Windows, nhưng không, vui lòng kiểm tra thông tin của bạn trước khi trả lời.
Anic17
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.