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

410

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

Liam
fuente
¿Esto ayuda? http://malektips.com/xp_dos_0001.html http://commandwindows.com/server2003tools.htm Aquí está el enlace directo de Microsoft. Lo probé en mi máquina (solo por curiosidad y porque podría necesitarlo) y funciona bien.
Johnny
1
En realidad, hay cola para XP, es solo que Microsoft no lo instala con la versión estándar de XP; lo empaquetaron en 'Herramientas del kit de recursos de Windows Server 2003'. Puede obtenerlo aquí: microsoft.com/downloads/…
Matt Poush
1
No es un engaño exacto, pero mira aquí stackoverflow.com/questions/247234/…
Martin Beckett el
mobaXTerm, es gratis y tiene un registro de complementos, puede hacer cola -f /drives/c/logs/mylog.log
surfealokesea
3
No creo que esto deba haberse cerrado, ya que necesito lo mismo para depurar el seguimiento en mi aplicación de Windows. Se trata de "herramientas de software comúnmente utilizadas por los programadores", que es el tema
kristianp

Respuestas:

137

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

Ryan Duffield
fuente
55
Intenté usar GNU tailen un archivo de 2GB y se ahogó. morefuncionó bien (al menos ver el inicio del archivo).
Eric J.
@EricJ., Lo mismo para mí. En un archivo de 3GB puedo hacer headpero no tail... ¿Ideas?
Alphaaa
@Alphaaa: sospecho que tiene que ver con las llamadas al sistema operativo que utiliza GNU Utilities. Ver stackoverflow.com/a/4003487/141172
Eric J.
@EricJ., Gracias, eso parece relevante de hecho. Pero me di cuenta de que es más fácil para mí usar una solución alternativa: solo voy a escribir un script simple que haga un tail:)
Alphaaa
1
Aquí creo que es una mejor solución: stackoverflow.com/questions/4426442/…
Dung
442

Si usa PowerShell, 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 presenta un parámetro -Tail para incluir solo las últimas líneas x

Alex
fuente
13
En realidad, esto no es dinámico
Jey Geethan
16
Es bueno saber esto; Gracias. Pero tuve un par de problemas con él (en Windows 7). (1) muestra el archivo completo (no es bueno para un archivo de registro masivo, por lo que tailpuede ser útil) (2) no es tan dinámico como me gustaría (tal vez debido a cambios en el sistema operativo / sistema de archivos entre mi configuración y otros pósters ?) Es decir, determiné que el shell a Get-Contentveces no se actualiza hasta que lo ejecuto diren otro shell.
mpontillo
10
Creo que vale la pena mencionar que PowerShell pausará el desplazamiento / salida si selecciona algo dentro de la ventana del terminal para darle la oportunidad de leer, copiar / pegar, etc. Si presiona Enter, se reanudará el desplazamiento.
cbednarski
19
PowerShell 3 presenta un parámetro -Tail para incluir solo las últimas líneas x
Stefan Haberl
8
Entonces, ¿no debería ser la respuesta correcta para Powershell Get-Content -Tail 100 -Wait .\logfile.log?
Henno Vermeulen
62

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

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

Sopa instantánea
fuente
¡Esto terminó siendo la primera solución que funcionó para mí en [trago] Windows Server 2003 R2 SP1! Súper fácil con el instalador, funcionó para seguir fácilmente desde el primer momento :)
cellepo
La descarga y ejecución de ejecutables sin firmar a través de HTTP probablemente no sea una buena idea. Por lo menos, uno debe descargar a través de su sitio HTTPS .
Zero3
Me parece sorprendente que sigan manteniendo el sitio y actualizando el certificado SSL hasta la fecha, mientras que el software no se actualiza desde 2006. Sin embargo, funciona bien. Exactamente lo que necesitaba. Windows Defender no encuentra ninguna amenaza.
Lionet Chen
31

Puedes obtener cola como parte de Cygwin .

Quentin
fuente
24

Cualquier persona interesada en una cola CMD de 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
Peter Mortensen
fuente
¡Esto es inteligente, y mi objetivo es utilizar la funcionalidad existente cuando descargar una herramienta no es una opción! Sin embargo, este código comerá CPU, ya que girará continuamente en el seguimiento de -f.
armstrhb
1
Tuve el mismo problema con la descarga y comer CPU! agregó esta línea ping 127.0.0.1 -n 2 > nulantes goto followloop. envía dos pings y espera 1 en segundo entre ellos. así que dejaría vivir a la CPU: D
Mohsen ZareZardeyni
¡Increíble! Muchas gracias
John Fairbanks
1
¿Por qué emplear ping si podría utilizar timeout /t 2?
namezero
23

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

  • La cola GnuWin32 tiene errores ( α β γ ): cosas como -f simplemente no funcionan.

  • UnxUtils tail parece mejor (-f funciona, pero --pid parece no hacerlo, -n pero no --lines = n falla con -f), pero parece ser un proyecto muerto.

  • Cygwin es una gran cosa fea, tal vez podría usar el paquete DLL y coreutils , pero aún tiene problemas como: pid no funciona con procesos win32 nativos.

gz.
fuente
19

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

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

Jake
fuente
Yo segundo Tail para Windows. Me gusta porque puedo abrir y monitorear múltiples archivos en la misma ventana.
Paul
la forma de cola gc powershell no funciona si estás en Posh 1 o Posh 2.x. La funcionalidad gc -tail se agregó en Posh 3.0.
user1390375
16

Con Windows PowerShell puede usar:

Get-Content <file> -Wait
OscarRyz
fuente
15

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

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

Lamentablemente, este software ya no está disponible. Puedes leer sobre esto en archive.org .

Grzegorz Gralak
fuente
Me encantan las características de Log Expert, sin embargo, mi experiencia ha sido defectuosa con Win 7 64 bit.
Clay
Echo de menos la funcionalidad de "vista clara".
Daniel Hári
13

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. La salida es algo así como:

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

2) Usando for / 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í.

EDITAR: 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
Philibert Perusse
fuente
55
Aquí está el lote de la explicación anterior. Muestra las últimas 10 líneas del archivo actual: ____ para / f "tokens = 3" %% f in ('find / c / v ""% 0') do set nbLines = %% f ____ set / a nbSkippedLines = % nbLines% -10 ____ for / f "skip =% nbSkippedLines% delims =" %% d in (% 0) do echo %% d
Nicolas
1
Esto es exactamente lo que quiere el póster, y funciona bien.
Jackie Yeh
¡Gracias por el código! Lo agregué a la respuesta con el número de parámetro corregido y uno adicional al número de líneas. Tenga en cuenta que mostrará las líneas una salida. PD: lo usé para crear un archivo de 1.5 Gb y obtuve los resultados en solo 15 segundos.
Leopoldo Sanczyk
En realidad, en el paso n. ° 4, incluso sería mejor usar el comando 'más' que toma un parámetro en cuanto al número de líneas que se omiten. Incluso más rápido, creo.
Philibert Perusse
8

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í

Vijay
fuente
5

Prueba los servicios de Windows para UNIX . Proporciona conchas, awk, sed, etc., así como la cola.

Actualización : desafortunadamente, a partir de 2019, este sistema ya no está disponible en el Centro de descargas de Microsoft.

Dave
fuente
1
Esto tiene problemas en Win7 y versiones posteriores.
Doug Wilson
1
De Verdad? ¿Estás dando vueltas por las respuestas de cuatro años? Manera de contribuir.
Dave
99
@Dave: Aunque la pregunta es antigua, la gente todavía la está tratando de encontrar la mejor respuesta. Si una respuesta de hace casi 5 años ya no es relevante o buena, entonces ¿por qué no debería uno rechazarla? Todo este sitio trata de obtener información valiosa más rápido, hoy, no hace 5 años.
Oliver
1
@Hellfire: deberías editar la respuesta con la condición de que no funcione con Wwindows 7. Es tonto solo comentar.
Preet Sangha
4

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

Tomer Gabel
fuente
4

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

Dirk Vollmar
fuente
4

DOS typefunciona como * nux's cat, aunque al igual catque, descarga todo el archivo, por lo que no es realmente cierto tail, pero estará disponible en un apuro sin descargar / instalar un verdadero tailsustituto.

Uberfuzzy
fuente
4

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íelo. para mí robando ~ [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
Andrey
fuente
buena idea usando el comando "tipo", ¡pero no puedes canalizarlo!
eadmaster
Esto solo sigue recargando el archivo de texto.
la versión por lotes de echo tiene un comportamiento extraño, si no se le dan argumentos, simplemente sale, pero si llama al comando como echo.con un punto final en la palabra (y no como un argumento separado) imprimirá una sola línea nueva.
scragar
3

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

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

Grant Wagner
fuente
3

Instalar MKS Toolkit ... Para que pueda ejecutar todos los comandos de Unix en Windows.

El comando es:

tail -f <file-name>  
Peter Mortensen
fuente
3

En Far Manager , presione F3un archivo para ingresar al visor estándar, luegoEnd tecla para navegar hasta el final del archivo.

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

anatoly techtonik
fuente
1

Estoy usando Kiwi Log Viewer . Es gratis.

Peter Mortensen
fuente
Son 70 € por instalación. Eso no es gratis.
Sergey Podobry
0

Los visores de registro gráficos, aunque 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 a tal uso.


fuente
0

Creo que he encontrado una utilidad que satisface la necesidad de la función de cola en 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

Kalana
fuente