Ich suche nach dem Äquivalent des Unix-Befehls 'tail', mit dem ich die Ausgabe einer Protokolldatei beobachten kann, während sie geschrieben wird.
Ich würde vorschlagen, etwas wie GNU Utilities for Win32 zu installieren. Es hat die meisten Favoriten, einschließlich Schwanz.
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
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
Sie können Schwanz als Teil von Cygwin bekommen.
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
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.
Ich habe Tail For Windows verwendet. Sicher nicht so elegant wie mit
schwanz
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.
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.
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
Mit Windows PowerShell können Sie Folgendes verwenden:
Get-Content <file> -Wait
Ich habe vor kurzem Mtail verwendet und es scheint gut zu funktionieren. Dies ist der oben erwähnte GUI-Typ wie Baretail.
Versuchen Sie Windows Services for UNIX . Bietet Muscheln, awk, sed usw. sowie Schwanz.
Laden Sie den Befehl tail aus Windows Server 2003 Resource Kit Tools
von Microsoft selbst herunter.
Eine andere Möglichkeit wäre die Installation von MSYS (das ist leichter als Cygwin).
Ich bevorzuge TailMe, da mehrere Logdateien gleichzeitig in einem Fenster angezeigt werden können: http://www.dschensky.de/Software/Staff/tailme_en.htm
Der Befehl tail
und viele andere sind im Paket Windows Resource Kit Tools verfügbar.
DOS hat keinen Tail-Befehl; Sie können eine Windows-Binärdatei für GNU tail und andere GNU tools herunterladen hier .
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.
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
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.
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.
Install MKS Toolkit ... Damit Sie alle Unix-Befehle unter Windows ausführen können.
Der Befehl lautet:
tail -f <file-name>
Ich verwende Kiwi Log Viewer. Es ist kostenlos.
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:
Sie können auch WinTail versuchen.
ََ
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.