webentwicklung-frage-antwort-db.com.de

Ein Windows-Äquivalent zum Unix-Befehl tail

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

390
Liam

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

132
Ryan Duffield

Wenn Sie PowerShell verwenden, funktioniert Folgendes:

Get-Content filenamehere -Wait -Tail 30

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

In PowerShell 3 wird ein -Tail-Parameter eingeführt, der nur die letzten x Zeilen enthält

403
Alex

Ich habe immer Baretail für das Tailing in Windows verwendet. Es ist kostenlos und ziemlich nett.

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

62
Instantsoup

Sie können Schwanz als Teil von Cygwin bekommen.

31
Quentin

Alle Interessierten an einem DOS CMD-Tail mit Batch-Befehlen (siehe unten).

Es ist kein Präfekt, und die 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
23
formatguy

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

  • Die Windows Server 2003-Tools bieten einen einfachen Schwanz, der mit den Resource Kit-Tools heruntergeladen werden kann . Es ist in vielerlei Hinsicht zu begrenzt (Sperren der verfolgten Datei, es fehlen viele Optionen wie --pid), reicht jedoch für die grundlegende Aufgabe des Verfolgens einer Datei aus.

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

  • nxUtils tail scheint besser zu sein (-f funktioniert, aber --pid scheint nicht zu sein, -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 einfach das DLL und Coreutils-Paket verwenden - hat aber immer noch Probleme wie --pid, das nicht mit nativem win32 funktioniert prozesse.

22
gz.

Ich habe Tail For Windows verwendet. Sicher nicht so elegant wie mit

schwanz
18
Jake

Ich habe Log Expert nirgends unter den Antworten hier gesehen.

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

15
Grzegorz Gralak

Wenn Sie überhaupt nichts installieren möchten, können Sie eine "eigene" Batch-Datei erstellen, die die Arbeit mit Standard-Windows-Befehlen erledigt. Hier einige Hinweise zur Vorgehensweise.

1) Mit find/c/v "" yourinput.file ermitteln Sie die Anzahl der Zeilen in Ihrer Eingabedatei. Die Ausgabe sieht ungefähr so ​​aus:

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

2) Analysieren Sie diese Ausgabe mit für/f, um die Zahl 15 zu erhalten.

3) Berechnen Sie mit set/a die Anzahl der zu überspringenden Überschriften

4) Mit für/f "skip = n" die Kopfzeilen überspringen und die Endzeilen ausgeben/verarbeiten.

Wenn ich die Zeit finde, erstelle ich eine solche Batch-Datei und poste sie hier zurück.

EDIT: 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
12

Mit Windows PowerShell können Sie Folgendes verwenden:

Get-Content <file> -Wait
11
OscarRyz

Ich habe vor kurzem Mtail verwendet und es scheint gut zu funktionieren. Dies ist der oben erwähnte GUI-Typ wie Baretail. enter image description here

7
Vijay

Versuchen Sie Windows Services for UNIX . Bietet Muscheln, awk, sed usw. sowie Schwanz.

6
Dave

Laden Sie den Befehl tail aus Windows Server 2003 Resource Kit Tools von Microsoft selbst herunter.

5
ismail

Eine andere Möglichkeit wäre die Installation von MSYS (das ist leichter als Cygwin).

4
Dirk Vollmar

Ich bevorzuge TailMe, da mehrere Logdateien gleichzeitig in einem Fenster angezeigt werden können: http://www.dschensky.de/Software/Staff/tailme_en.htm

4
B.E.

Der Befehl tail und viele andere sind im Paket Windows Resource Kit Tools verfügbar.

4
ucfjeff

DOS hat keinen Tail-Befehl; Sie können eine Windows-Binärdatei für GNU tail und andere GNU tools herunterladen hier .

4
Tomer Gabel

DOS's type funktioniert wie * nux's cat, obwohl es genau wie cat die gesamte Datei speichert, so dass es nicht wirklich ein wahres tail ist, aber es wird verfügbar sein zur Not, ohne einen echten tail -Ersatz herunterzuladen/zu installieren.

4
Uberfuzzy

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, wie die Ausgabe auf die letzten 10 Zeilen der Datei zu beschränken usw. Wenn Sie dieses Skript verbessern, senden Sie es bitte für mich bei rauben ~ [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
4
Andrey

Drücken Sie in Far Manager F3 Klicken Sie auf eine Datei, um den Standard-Viewer aufzurufen End Taste, um zum Ende der Datei zu navigieren.

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

3

Wenn Sie Win32-Ports einiger Unix-Dienstprogramme verwenden möchten (anstatt Cygwin zu installieren), empfehle ich GNU-Dienstprogramme für Win32 .

Leichter als Cygwin und tragbarer.

3
Grant Wagner

Install MKS Toolkit ... Damit Sie alle Unix-Befehle unter Windows ausführen können.

Der Befehl lautet:

tail -f <file-name>  
3
user229580

Ich verwende Kiwi Log Viewer. Es ist kostenlos.

1
user615011

Ich glaube, ich habe ein Dienstprogramm gefunden, das die Notwendigkeit für die Tail-Funktion in Batch-Dateien erfüllt. Es heißt "mtee" und ist kostenlos. Ich habe es in eine Batch-Datei eingefügt, 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

0
user825233

Sie können auch WinTail versuchen.

ََ

0
GJ.

Grafische Protokoll-Viewer eignen sich zwar sehr gut zum Anzeigen von Protokolldateien, benötigen jedoch kein Befehlszeilen-Dienstprogramm, das in Skripts (oder Batch-Dateien) integriert werden kann. Häufig 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
user825233