Pregunta

Estoy buscando el equivalente del comando 'cola' de Unix que me permitirá ver la salida de un archivo de registro mientras se está escribiendo.

¿Fue útil?

Solución

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

Otros consejos

Si usa PowerShell, esto funciona:

Get-Content filenamehere -Wait -Tail 30

Publicando 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

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

Editar: para obtener una mejor descripción de Baretail, vea esta pregunta

Puede obtener cola como parte de Cygwin .

Cualquier persona interesada en una cola CMD DOS utilizando 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

Hay muchas opciones, sin embargo, todas tienen fallas con funciones más avanzadas.

He usado Tail For Windows . Ciertamente no es tan elegante como usar

tail
pero luego, estás usando Windows. ;)

No he visto Log Expert en ninguna parte entre las respuestas aquí.

Es personalizable y es bastante bueno para recorrer archivos de registro. Hasta ahora, es el mejor visor gráfico de registro de Windows para mí.

Si no desea instalar nada, puede " construir su propio " archivo por lotes que hace el trabajo desde los comandos estándar de Windows. Aquí hay algunos consejos sobre cómo hacerlo.

1) Usando find / c / v " " yourinput.file , obtenga el número de líneas en su archivo de entrada. El resultado es algo así como:

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

2) Usando para / f , analiza esta salida para obtener el número 15.

3) Usando set / a , calcule el número de líneas de cabecera que deben omitirse

4) Usando para / f " skip = n " omita las líneas de cabecera y repita / procese las líneas de cola.

Si encuentro el tiempo, construiré un archivo por lotes y lo publicaré aquí.

Con Windows PowerShell puede usar:

Get-Content <file> -Wait

He usado Mtail recientemente y parece funcionar bien. Este es el tipo de GUI como baretail mencionado anteriormente. ingrese la descripción de la imagen aquí

Pruebe Servicios de Windows para UNIX . Proporciona conchas, awk, sed, etc., así como cola.

Descargue el comando tail, parte de Herramientas del Kit de recursos de Windows Server 2003 de Microsoft en sí.

Prefiero TailMe debido a la posibilidad de ver varios archivos de registro simultáneamente en una ventana: http://www.dschensky.de/Software/Staff/tailme_en.htm

DOS no tiene ningún comando de cola; puede descargar un binario de Windows para GNU tail y otras herramientas de GNU aquí .

Otra opción sería instalar MSYS (que es más ligero que Cygwin).

El

tipo DOS funciona como el cat de * nux, aunque al igual que cat , descarga el archivo completo, por lo que no es realmente cierto tail , pero estará disponible en caso de necesidad sin descargar / instalar un verdadero sustituto tail .

Acabo de escribir este pequeño script por lotes. No es tan sofisticado como la cola de Unix, pero espero que alguien pueda agregarlo para mejorarlo, como limitar la salida a las últimas 10 líneas del archivo, etc. Si mejora este script, envíe para mí al robar ~ [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

El comando tail y muchos otros son disponible en el paquete Herramientas del kit de recursos de Windows .

Si desea utilizar los puertos Win32 de algunas utilidades de Unix (en lugar de instalar Cygwin), le recomiendo utilidades GNU para Win32 .

Más ligero que Cygwin y más portátil.

Instale MKS Toolkit ... para que pueda ejecutar todos los comandos de Unix en Windows.

El comando es:

tail -f <file-name>  

En Far Manager , presione F3 en un archivo para ingresar al visor estándar, luego la tecla Fin para navegar hasta el final del archivo.

Si el archivo se actualiza, Far Manager lo desplazará automáticamente.

Estoy usando Kiwi Log Viewer . Es gratis.

Los visores de registros gráficos, si bien pueden ser muy buenos para ver archivos de registro, no satisfacen la necesidad de una utilidad de línea de comandos que se pueda incorporar a los scripts (o archivos por lotes). A menudo, un comando tan simple y de propósito general se puede utilizar como parte de una solución especializada para un entorno particular. Los métodos gráficos no se prestan fácilmente para tal uso.

Creo que he encontrado una utilidad que satisface la necesidad de la función de cola en los archivos por lotes. Se llama "mtee", y es gratis. Lo he incorporado en un archivo por lotes en el que estoy trabajando y hace el trabajo muy bien. Solo asegúrate de poner el ejecutable en un directorio en la instrucción PATH y listo.

Aquí está el enlace:

mtee

Puede probar WinTail también.

??

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top