Un equivalente de Windows del comando tail de Unix [cerrado]

Resuelto Liam asked hace 16 años • 26 respuestas

Estoy buscando el equivalente del comando 'tail' de Unix que me permitirá observar la salida de un archivo de registro mientras se escribe en él.

Liam avatar Oct 09 '08 21:10 Liam
Aceptado

Si usas PowerShell entonces esto funciona:

Get-Content filenamehere -Wait -Tail 30

Publicar el comentario de Stefan desde abajo para que la gente no se lo pierda.

PowerShell 3 introduce un parámetro -Tail para incluir solo las últimas x líneas

Alex avatar Oct 09 '2008 16:10 Alex

Sugeriría instalar algo como GNU Utilities para Win32 . Tiene la mayoría de los favoritos, incluida la cola.

Ryan Duffield avatar Oct 09 '2008 14:10 Ryan Duffield

Siempre he usado Baretail para seguir en Windows. Es gratis y bastante bonito.

Instantsoup avatar Oct 09 '2008 14:10 Instantsoup

Puedes obtener cola como parte de Cygwin .

Quentin avatar Oct 09 '2008 14:10 Quentin

Cualquiera interesado en una cola CMD de DOS que utilice comandos por lotes (ver más abajo).

No es perfecto y las líneas a veces se repiten.

Uso: 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
 avatar Aug 20 '2009 16:08