Wie zeige ich den Inhalt einer Textdatei in CMD an?


227

Ich möchte den Inhalt einer Textdatei in einem CMD-Fenster anzeigen. Außerdem möchte ich die neuen Zeilen sehen, die der Datei hinzugefügt wurden, wie z tail -f. B. den Befehl in Unix.



Wenn eine dieser Antworten Ihr Problem gelöst hat, markieren Sie die Antwort.
Michael Yaeger

Antworten:


321

Sie können den moreBefehl verwenden. Beispielsweise:

more filename.txt

Schauen Sie sich die GNU-Dienstprogramme für Win32 an oder laden Sie sie herunter :


Wie ist das ähnlich wie Schwanz -f? Schwanz-f-Schleifen für immer. Wie haben Sie das -f davon repliziert?
Elie Saad

2
Dies beantwortet die Frage nicht. Ich bin mir nicht sicher, warum es so hoch bewertet wurde. OP suchte nach zwei Dingen - einer Windows-Alternative zu cat und einer Alternative zu tail -f. Wenn Sie die GNU-Dienstprogramme für Windows installieren möchten, können Sie diese Dinge verwenden.
Gburton

174

Wir können den Befehl 'type' verwenden, um den Dateiinhalt in cmd anzuzeigen.

Beispiel -

type abc.txt

Weitere Informationen finden Sie HIER .


Ich mag diese Antwort, weil sie nicht interaktiv ist. morezeigt N Bildschirme gleichzeitig, durch die Sie klicken müssen
user2023861

23

Ich glaube nicht, dass es dafür eine eingebaute Funktion gibt

xxxx.txt > con

Dadurch werden die Dateien im Standardtexteditor in Windows geöffnet ...

type xxxx.txt

Dies zeigt die Datei im aktuellen Fenster an. Vielleicht hat dies Parameter, die Sie verwenden können ...

Hier gibt es eine ähnliche Frage: CMD.EXE-Batch-Skript zum Anzeigen der letzten 10 Zeilen aus einer txt-Datei Es gibt also einen "more" -Befehl zum Anzeigen einer Datei aus der angegebenen Zeile, oder Sie können die von bryanph vorgeschlagenen GNU-Dienstprogramme für Win32 verwenden in seinem Link.


7

Mit dem Befehl 'more' können Sie den Inhalt der Datei anzeigen:

more filename.txt

2
Willkommen bei StackOverflow und vielen Dank, dass Sie versucht haben zu helfen. Bitte erläutern Sie, wie die Windows-Version von more verwendet werden kann, um neu ankommende Zeilen in einer Textdatei automatisch anzuzeigen. Dadurch würde sich Ihre Antwort direkter auf die Frage des OP beziehen, dh die von OP gewünschte "tail-f" -Kompatibilität demonstrieren.
Yunnosch

4

Verwenden eines einzelnen PowerShell-Befehls zum Abrufen der Dateiende:

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

Dies gilt für PowerShell 3.0 und höher.

Eine andere Möglichkeit besteht darin, eine Datei namens TAIL.CMD mit diesem Code zu erstellen:

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

Es funktioniert, ist aber zu langsam, da der Start von PowerShell 2 oder 3 Sekunden dauern kann.
Anic17 vor

2

Zu diesem Zweck können Sie die erweiterte Befehlszeilen-Shell von Microsoft mit dem Namen " Windows PowerShell " verwenden. Es sollte Standard in den neuesten Windows-Versionen sein, aber Sie können es von Microsoft herunterladen, wenn Sie es noch nicht installiert haben.

Um die letzten fünf Zeilen in der Textdatei zu erhalten, lesen Sie einfach die Datei mit Get-Contentund Select-Objectwählen Sie dann die letzten fünf Elemente / Zeilen für Sie aus:

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

Quelle: Verwenden des Get-Content-Cmdlets


Die Antwort von @Eyal ist passender, wenn sie vom cmd aufgerufen wird, und der Code verwendet Tail besser als das Piping in Select-Object. Sie können nicht warten, während Sie auch Objekt auswählen ausführen. Dies ist nicht das, was das OP anfordert.
Elie Saad



1

Wenn Sie möchten, dass der Inhalt der Datei live angezeigt und aktualisiert wird, wenn die Datei geändert wird, verwenden Sie einfach dieses Skript:

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

Das wird sich für immer wiederholen, bis Sie das cmd-Fenster schließen.


Dies repliziert nicht die Funktionalität von Tail.
Preet Sangha

1

Sie können dies mit einigen Methoden tun:

Eins ist der typeBefehl: type filename Ein anderes ist der moreBefehl: more filename Mit können moreSie das auch tun:type filename | more

Die letzte Option ist die Verwendung von for for /f "usebackq delims=" %%A in (filename) do (echo.%%A) Dies wird für jede Zeile verwendet und deren Inhalt angezeigt. Dies entspricht dem typeBefehl, ist jedoch eine andere Methode zum Lesen des Inhalts.

Wenn Sie fragen, was Sie verwenden sollen, verwenden Sie den moreBefehl, da er eine Pause macht.


0

Wenn Sie beispielsweise alle .config- (oder .ini-) Dateinamen und Dateiinhalte als Benutzerreferenz in einem Dokument anzeigen möchten (und damit meine ich, dass der Benutzer den Shell-Befehl nicht kennt, dh 95% von ihnen), können Sie Folgendes versuchen:

FORFILES / M * myFile.ini / C "cmd / c echo Dateiname: @file >>% temp% \ stdout.txt && Typ @path >>% temp% \ stdout.txt && echo. >>% temp% \ stdout.txt "| Geben Sie% temp% \ stdout.txt ein

Erläuterung: - ForFiles: Schleife in einem Verzeichnis (und untergeordnetem Element usw.), wobei jede Datei die Kriterien erfüllt. - Kann den aktuellen Dateinamen zurückgeben, der gerade verarbeitet wird (@file). - Kann die vollständige Pfaddatei zurückgeben, die gerade verarbeitet wird (@path). - Typ: Geben Sie den Dateiinhalt aus

Ps: Der letzte Pipe-Befehl zeigt auf die% temp% -Datei und gibt den Gesamtinhalt aus. Wenn Sie eine Dokumentation kopieren / einfügen möchten, öffnen Sie einfach die Datei stdout.txt im Textpad.

Schönen Tag.


Bitte verwenden Sie den Blockcode `` `, um Ihren Code einzufügen, da dies das Lesen erleichtert.
Anic17 vor

-1
tail -3 d:\text_file.txt

tail -1 d:\text_file.txt

Ich gehe davon aus, dass dies irgendwann zu Windows cmd.exe hinzugefügt wurde.


2
Nein, tailist immer noch kein Standard-Windows-Befehl. Normalerweise ist es Teil eines Addons wie Cygwin, GNU oder anderer.
Stephan

Dies ist keine gute Antwort. Sie sagen nur, dass dies in Windows implementiert wurde. Nein, überprüfen Sie Ihre Informationen, bevor Sie antworten.
Anic17
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.