Ein Windows-Äquivalent des Unix-Befehls tail [geschlossen]


410

Ich suche nach dem Äquivalent des Unix-Befehls 'tail', mit dem ich die Ausgabe einer Protokolldatei beobachten kann, während sie geschrieben wird.


Hilft das? http://malektips.com/xp_dos_0001.html http://commandwindows.com/server2003tools.htm Hier ist der direkte Microsoft-Link. Ich habe es auf meinem Computer getestet (nur aus Neugier und weil ich es möglicherweise brauche) und es funktioniert einwandfrei.
Johnny

1
Es tatsächlich ist Schwanz für XP, es ist nur , dass Microsoft nicht installiert es mit der Standardversion von XP; Sie haben es in "Windows Server 2003 Resource Kit Tools" gepackt. Sie können es hier bekommen: microsoft.com/downloads/…
Matt Poush

1
Nicht genau ein Betrüger, aber siehe hier stackoverflow.com/questions/247234/…
Martin Beckett

mobaXTerm, es ist kostenlos und hat ein Protokoll von Plugins, Sie können tail -f /drives/c/logs/mylog.log
surfealokesea

3
Ich denke nicht, dass dies geschlossen werden sollte, da ich dasselbe brauche, um die Ablaufverfolgung in meiner Windows-Anwendung zu debuggen. Es geht um "Software-Tools, die häufig von Programmierern verwendet werden", die zum Thema gehören
kristianp

Antworten:


137

Ich würde vorschlagen, etwas wie GNU Utilities für Win32 zu installieren . Es hat die meisten Favoriten, einschließlich Schwanz.


5
Ich habe gerade versucht, GNUs tailfür eine 2-GB-Datei zu verwenden, und es ist erstickt. morehat gut funktioniert (zumindest den Anfang der Datei anzeigen).
Eric J.

@EricJ., Das gleiche für mich. Auf einer 3GB Datei kann ich headaber nicht tail... Ideen?
Alphaaa

@Alphaaa: Ich vermute, es hat mit den Betriebssystemaufrufen zu tun, die GNU Utilities verwendet. Siehe stackoverflow.com/a/4003487/141172
Eric J.

@EricJ., Danke, das scheint in der Tat relevant zu sein. Aber ich habe gerade festgestellt, dass es für mich einfacher ist, eine tail
Problemumgehung

1
Hier glaube ich, ist eine bessere Lösung: stackoverflow.com/questions/4426442/…
Dung

441

Wenn Sie PowerShell verwenden, funktioniert dies:

Get-Content filenamehere -Wait -Tail 30

Poste Stefans Kommentar von unten, damit die Leute ihn nicht verpassen

PowerShell 3 führt einen -Tail-Parameter ein, der nur die letzten x Zeilen enthält


13
Eigentlich ist das nicht dynamisch
Jey Geethan

16
Das ist gut zu wissen; Vielen Dank. Aber ich hatte ein paar Probleme damit (unter Windows 7). (1) Es zeigt die gesamte Datei an (nicht gut für eine massive Protokolldatei, weshalb taildies nützlich sein kann). (2) Es ist nicht so dynamisch, wie ich es gerne hätte (möglicherweise aufgrund von Änderungen des Betriebssystems / Dateisystems zwischen meinem Setup und anderen Postern ?). Das heißt, ich habe festgestellt, dass die Shell Get-Contentmanchmal nicht aktualisiert wird, bis ich dirin einer anderen Shell ausgeführt werde.
mpontillo

10
Ich denke, es ist erwähnenswert, dass PowerShell das Scrollen / Ausgeben anhält, wenn Sie etwas im Terminalfenster auswählen, damit Sie lesen, kopieren / einfügen usw. können. Wenn Sie die Eingabetaste drücken, wird das Scrollen fortgesetzt.
Cbednarski

18
PowerShell 3 führt einen -Tail-Parameter ein, der nur die letzten x Zeilen enthält
Stefan Haberl

8
Sollte die richtige Antwort für Powershell nicht so etwas sein Get-Content -Tail 100 -Wait .\logfile.log?
Henno Vermeulen

62

Ich habe Baretail immer zum Tailing in Windows verwendet. Es ist kostenlos und ziemlich nett.

Bearbeiten: Für eine bessere Beschreibung von Baretail siehe diese Frage


Dies war die erste Lösung, die unter Windows Server 2003 R2 SP1 für mich funktioniert hat! Super einfach mit Installer, arbeitete für Tailing Wasily direkt aus der Box :)
Cellepo

Das Herunterladen und Ausführen nicht signierter ausführbarer Dateien über HTTP ist wahrscheinlich keine gute Idee. Zumindest sollte man über ihre HTTPS-Site herunterladen .
Zero3

Ich finde es erstaunlich, dass sie die Site weiterhin pflegen und das SSL-Zertifikat auf dem neuesten Stand halten, während die Software seit 2006 nicht mehr aktualisiert wird. Es funktioniert jedoch einwandfrei. Genau das, was ich brauchte. Windows Defender findet keine Bedrohung.
Lionet Chen


24

Jeder, der an einem DOS- CMD-Tail mit Batch-Befehlen interessiert ist (siehe unten).

Es ist kein Präfekt und Zeilen wiederholen sich manchmal.

Verwendung: tail.bat -d tail.bat -f -f

@echo off
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
rem tail.bat -d <lines> <file>
rem tail.bat -f <file>

rem ****** MAIN ******
IF "%1"=="-d" GOTO displayfile
IF "%1"=="-f" GOTO followfile

GOTO end

rem ************
rem Show Last n lines of file
rem ************

:displayfile
SET skiplines=%2
SET sourcefile=%3

rem *** Get the current line count of file ***
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET find_lc=%%l)

rem *** Calculate the lines to skip
SET /A skiplines=%find_lc%-!skiplines!

rem *** Display to screen line needed
more +%skiplines% %sourcefile%

GOTO end

rem ************
rem Show Last n lines of file & follow output
rem ************

:followfile
SET skiplines=0
SET findend_lc=0
SET sourcefile=%2

:followloop
rem *** Get the current line count of file ***
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET find_lc=%%l)
FOR /F "usebackq tokens=3,3 delims= " %%l IN (`find /c /v "" %sourcefile%`) DO (call SET findend_lc=%%l)

rem *** Calculate the lines to skip
SET /A skiplines=%findend_lc%-%find_lc%
SET /A skiplines=%find_lc%-%skiplines%

rem *** Display to screen line when file updated
more +%skiplines% %sourcefile%

goto followloop

:end

Das ist klug und ich möchte die vorhandenen Funktionen nutzen, wenn das Herunterladen eines Tools keine Option ist! Dieser Code verbraucht jedoch CPU, da er sich im Follow-up für -f kontinuierlich dreht.
Armstrhb

1
hatte das gleiche Problem beim Herunterladen und Essen von CPU! fügte diese Zeile ping 127.0.0.1 -n 2 > nulvor goto followloop. Es sendet zwei Pings und wartet 1 in Sekunden dazwischen. so würde es CPU leben lassen !: D
Mohsen ZareZardeyni

Genial! Vielen Dank
John Fairbanks

1
Warum Ping einsetzen, wenn Sie es nutzen könnten timeout /t 2?
Namezero

23

Es gibt eine ganze Reihe von Optionen, jedoch weisen alle Fehler mit erweiterten Funktionen auf.

  • GnuWin32 Schwanz ist fehlerhaft ( α β γ ) - Dinge wie -f funktionieren einfach nicht.

  • UnxUtils Schwanz scheint besser zu sein (-f funktioniert, aber --pid scheint nicht, -n aber nicht --lines = n schlägt mit -f fehl), scheint aber ein totes Projekt zu sein.

  • Cygwin ist ein großer hässlicher Brei, könnte vielleicht nur das DLL- und Coreutils-Paket verwenden - hat aber immer noch Probleme wie --pid, das nicht mit nativen Win32-Prozessen funktioniert.


19

Ich habe Tail für Windows verwendet . Sicher nicht so elegant wie mit

Schwanz
Aber dann verwenden Sie Windows. ;)


Ich zweite Tail für Windows. Ich mag es, weil ich mehrere Dateien im selben Fenster öffnen und überwachen kann.
Paul

Die Powershell GC-Schwanz-Methode funktioniert nicht, wenn Sie auf einem Posh 1 oder Posh 2.x sind. Die gc-tail-Funktionalität wurde in Posh 3.0 hinzugefügt.
user1390375

16

Mit Windows PowerShell können Sie Folgendes verwenden:

Get-Content <file> -Wait

15

Ich habe Log Expert unter den Antworten hier nirgends gesehen.

Es ist anpassbar und eignet sich gut zum Umgehen von Protokolldateien. Bisher ist es der beste grafische Windows-Protokoll-Viewer für mich.

Leider ist diese Software nicht mehr verfügbar. Sie können darüber auf archive.org lesen .


Ich liebe die Funktionen von Log Expert, aber meine Erfahrung mit Win 7 64-Bit war fehlerhaft.
Clay

Ich vermisse die "klare Sicht" -Funktionalität.
Daniel Hári

13

Wenn Sie überhaupt nichts installieren möchten, können Sie eine "eigene" Batchdatei erstellen, die die Aufgabe mit Standard-Windows-Befehlen erledigt. Hier sind einige Hinweise, wie es geht.

1) Mit find / c / v "" yourinput.file ermitteln Sie die Anzahl der Zeilen in Ihrer Eingabedatei. Die Ausgabe ist so etwas wie:

---------- T.TXT: 15

2) Analysieren Sie diese Ausgabe mit for / f , um die Nummer 15 zu erhalten.

3) Berechnen Sie mit set / a die Anzahl der Überschriften, die übersprungen werden müssen

4) Mit for / f "skip = n" überspringen Sie die Überschriften und geben Sie die Endzeilen wieder.

Wenn ich die Zeit finde, werde ich eine solche Batch-Datei erstellen und hier zurück posten.

BEARBEITEN: tail.bat

REM tail.bat
REM
REM Usage: tail.bat <file> <number-of-lines> 
REM
REM Examples: tail.bat myfile.txt 10
REM           tail.bat "C:\My File\With\Spaces.txt" 10

@ECHO OFF
for /f "tokens=2-3 delims=:" %%f in ('find /c /v "" %1') do (
    for %%F in (%%f %%g) do set nbLines=%%F )
set /a nbSkippedLines=%nbLines%-%2
for /f "usebackq skip=%nbSkippedLines% delims=" %%d in (%1) do echo %%d

5
Hier ist der Stapel der vorherigen Erklärung. Es werden die letzten 10 Zeilen der aktuellen Datei angezeigt: ____ für / f "Token = 3" %% f in ('find / c / v ""% 0') setze nbLines = %% f ____ setze / a nbSkippedLines = % nbLines% -10 ____ für / f "skip =% nbSkippedLines% delims =" %% d in (% 0) gibt %% d wieder
Nicolas

1
Genau das will das Poster und es funktioniert einwandfrei.
Jackie Yeh

Danke für den Code! Ich habe es der Antwort mit der korrigierten Parameternummer und einer zusätzlichen zur Anzahl der Zeilen hinzugefügt. Beachten Sie, dass die Zeilen einen Ausgang anzeigen. PS: Ich habe damit eine 1,5-GB-Datei erstellt und die Ergebnisse in nur 15 Sekunden erhalten.
Leopoldo Sanczyk

In Schritt 4 wäre es sogar noch besser, den Befehl 'more' zu verwenden, der einen Parameter für die Anzahl der zu überspringenden Zeilen verwendet. Noch schneller würde ich denken.
Philibert Perusse

8

Ich habe Mtail kürzlich verwendet und es scheint gut zu funktionieren. Dies ist der oben erwähnte GUI-Typ wie Baretail. Geben Sie hier die Bildbeschreibung ein



5

Probieren Sie Windows Services für UNIX aus . Bietet Muscheln, awk, sed usw. sowie Schwanz.

Update -: Ab 2019 ist dieses System leider nicht mehr im Microsoft Download Center verfügbar.


1
Dies hat Probleme unter Win7 und neuer.
Doug Wilson

1
"Ja wirklich?" Sie laufen herum und stimmen vier Jahre alte Antworten ab? Weg, um einen Beitrag zu leisten.
Dave

9
@ Dave: Obwohl die Frage alt ist, schauen die Leute immer noch darauf und versuchen, die beste Antwort zu finden. Wenn eine Antwort von vor fast 5 Jahren nicht mehr relevant oder gut ist, warum sollte man sie dann nicht ablehnen? Auf dieser ganzen Website geht es darum, wertvolle Informationen schneller zu erhalten - heute, nicht vor 5 Jahren.
Oliver

1
@Hellfire - Sie sollten die Antwort mit der Maßgabe bearbeiten, dass sie mit Wwindows 7 nicht funktioniert. Es ist dumm, nur einen Kommentar abzugeben.
Preet Sangha


4

DOS hat keinen Endbefehl; Sie können einen Windows - Binary für GNU Schwanz und andere GNU - Tools Download hier .



4

DOS typefunktioniert wie * nux cat, obwohl es genau so ist cat, als würde es die gesamte Datei sichern, so dass es nicht wirklich wahr ist tail, aber es wird zur Not verfügbar sein, ohne einen echten tailErsatz herunterzuladen / zu installieren .


4

Ich habe gerade dieses kleine Batch-Skript geschrieben. Es ist nicht so ausgefeilt wie das Unix "Tail", aber hoffentlich kann jemand etwas hinzufügen, um es zu verbessern, z. B. die Ausgabe auf die letzten 10 Zeilen der Datei zu beschränken usw. Wenn Sie dieses Skript verbessern, senden Sie es bitte zu mir beim berauben ~ [at] ~ gmail.com.

@echo off

:: This is a batch script I wrote to mimic the 'tail' UNIX command.
:: It is far from perfect, but I am posting it in the hopes that it will
:: be improved by other people. This was designed to work on Windows 7.
:: I have not tested it on any other versions of Windows

if "%1" == "" goto noarg
if "%1" == "/?" goto help
if "%1" == "-?" goto help
if NOT EXIST %1 goto notfound
set taildelay=%2
if "%taildelay%"=="" set taildelay=1

:loop
cls
type %1

:: I use the CHOICE command to create a delay in batch.

CHOICE /C YN /D Y /N /T %taildelay%
goto loop

:: Error handlers

:noarg
echo No arguments given. Try /? for help.
goto die

:notfound
echo The file '%1' could not be found.
goto die

:: Help text

:help
echo TAIL filename [seconds]

:: I use the call more pipe as a way to insert blank lines since echo. doesnt
:: seem to work on Windows 7

call | more
echo Description:
echo     This is a Windows version of the UNIX 'tail' command.
echo     Written completely from scratch by Andrey G.
call | more
echo Parameters:
echo    filename             The name of the file to display
call | more
echo    [seconds]            The number of seconds to delay before reloading the
echo                         file and displaying it again. Default is set to 1
call | more
echo ú  /?                   Displays this help message
call | more
echo    NOTE:
echo    To exit while TAIL is running, press CTRL+C.
call | more
echo Example:
echo    TAIL foo 5
call | more
echo    Will display the contents of the file 'foo',
echo    refreshing every 5 seconds.
call | more

:: This is the end

:die

nette Idee mit dem Befehl "type", aber Sie können nicht darauf zugreifen!
eadmaster

Dadurch wird die Textdatei immer wieder neu geladen.

Die Batch-Version von echo hat ein seltsames Verhalten. Wenn keine Argumente angegeben werden, wird sie nur beendet. Wenn Sie den Befehl jedoch wie echo.einen nachgestellten Punkt auf dem Wort aufrufen (und nicht als separates Argument), wird eine einzelne neue Zeile gedruckt.
Scragar




3

Drücken Sie in Far ManagerF3 auf eine Datei, um den Standard-Viewer aufzurufen , und drücken Sie dann die EndTaste, um zum Dateiende zu navigieren.

Wenn die Datei aktualisiert wird, wird sie von Far Manager automatisch gescrollt.



0

Grafische Protokollbetrachter eignen sich zwar sehr gut zum Anzeigen von Protokolldateien, erfordern jedoch kein Befehlszeilenprogramm, das in Skripts (oder Batchdateien) integriert werden kann. Oft kann ein solcher einfacher und universeller Befehl als Teil einer speziellen Lösung für eine bestimmte Umgebung verwendet werden. Grafische Methoden eignen sich nicht ohne weiteres für eine solche Verwendung.



0

Ich glaube, ich habe ein Dienstprogramm gefunden, das die Anforderungen für die Tail-Funktion in Batch-Dateien erfüllt. Es heißt "mtee" und ist kostenlos. Ich habe es in eine Batch-Datei aufgenommen, an der ich arbeite, und es macht den Job sehr gut. Stellen Sie einfach sicher, dass die ausführbare Datei in einem Verzeichnis in der PATH-Anweisung abgelegt ist, und los geht's.

Hier ist der Link:

mtee

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.