web-dev-qa-db-fra.com

Un équivalent Windows de la commande de queue Unix

Je recherche l'équivalent de la commande 'tail' d'Unix qui me permettra de regarder la sortie d'un fichier journal en cours d'écriture.

390
Liam

Je suggérerais d'installer quelque chose comme GNU Utilities for Win32 . Il a la plupart des favoris, y compris la queue.

132
Ryan Duffield

Si vous utilisez PowerShell, cela fonctionne:

Get-Content filenamehere -Wait -Tail 30

Afficher le commentaire de Stefan d'en bas pour que les gens ne le manquent pas

PowerShell 3 introduit un paramètre -Tail pour n'inclure que les x dernières lignes

403
Alex

J'ai toujours utilisé Baretail pour la mise au point dans Windows. C'est gratuit et joli Nice.

Edit: pour une meilleure description de Baretail, voir cette question

62
Instantsoup

Vous pouvez obtenir la queue dans le cadre de Cygwin .

31
Quentin

Toute personne intéressée par un DOS CMD tail utilisant des commandes batch (voir ci-dessous).

Ce n'est pas un préfet, et les lignes se répètent parfois.

Utilisation: 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

Il existe de nombreuses options, mais toutes ont des défauts avec des fonctionnalités plus avancées.

  • Outils Windows Server 20 fournit une fin simple qui peut être téléchargée avec les outils du kit de ressources . Il est trop limité à de nombreux égards (verrous de fichier suivis, il manque beaucoup d’options comme --pid), ce qui sera cependant utile pour la tâche de base du suivi d’un fichier.

  • GnuWin32 tail est un buggy ( αβγ ) - Des choses comme -f ne fonctionnent tout simplement pas.

  • nxUtils tail semble mieux (-f fonctionne, mais --pid semble ne pas l'être, -n mais pas --lines = n échoue avec -f), mais semble être un projet mort.

  • Cygwin est un gros moche, pourrait peut-être simplement utiliser les DLL et paquet coreutils - mais a toujours des problèmes comme --pid ne fonctionne pas avec win32 natif processus.

22
gz.

J'ai utilisé Tail For Windows . Certainement pas aussi élégant que d'utiliser

queue
18
Jake

Je n'ai pas vu Log Expert n'importe où parmi les réponses ici.

Il est personnalisable et convient très bien pour contourner les fichiers journaux. Jusqu'à présent, c'est la meilleure visionneuse de journaux graphiques Windows pour moi.

15
Grzegorz Gralak

Si vous ne souhaitez rien installer, vous pouvez "créer votre propre" fichier de commandes qui effectue le travail à partir de commandes Windows standard. Voici quelques conseils sur la façon de le faire.

1) En utilisant find/c/v "" yourinput.file, obtenez le nombre de lignes dans votre fichier d’entrée. La sortie est quelque chose comme:

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

2) En utilisant pour/f, analysez cette sortie pour obtenir le nombre 15.

3) À l'aide de set/a, calculez le nombre de lignes de tête à ignorer

4) Utilisation de pour/f "skip = n" ignorer les lignes principales et écho/traiter les lignes arrière.

Si je trouve le temps, je vais créer un tel fichier de commandes et le poster ici.

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

Avec Windows PowerShell, vous pouvez utiliser:

Get-Content <file> -Wait
11
OscarRyz

J'ai utilisé Mtail récemment et cela semble bien fonctionner. C'est le type d'interface graphique comme Baretail mentionné ci-dessus. enter image description here

7
Vijay

Essayez Windows Services for UNIX . Fournit des coquillages, awk, sed, etc. ainsi que la queue.

6
Dave

Téléchargez la commande tail faisant partie de Windows Server 2003 Resource Kit Tools à partir de Microsoft elle-même.

5
ismail

Une autre option serait d’installer MSYS (plus léger que Cygwin).

4
Dirk Vollmar

Je préfère TailMe pour la possibilité de regarder plusieurs fichiers journaux simultanément dans une fenêtre: http://www.dschensky.de/Software/Staff/tailme_en.htm

4
B.E.

La commande tail et bien d’autres sont disponibles dans le package Outils du Kit de ressources Windows .

4
ucfjeff

DOS a aucune commande de queue; vous pouvez télécharger un binaire Windows pour GNU tail et autres GNU outils ici .

4
Tomer Gabel

type de DOS fonctionne comme cat de * nux, bien que tout comme cat, il videra le fichier entier. Ce n'est donc pas vraiment un vrai tail, mais il sera disponible en un tournemain sans télécharger/installer un vrai substitut tail.

4
Uberfuzzy

Je viens d'écrire ce petit script batch. Il n’est pas aussi sophistiqué que la "queue" Unix, mais il est à espérer que quelqu'un pourra l’ajouter pour l’améliorer, par exemple en limitant la sortie aux 10 dernières lignes du fichier, etc. Si vous améliorez ce script, envoyez-le nous. pour moi à voler ~ [à] ~ 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

Dans Far Manager , appuyez sur F3 sur un fichier pour entrer dans la visionneuse standard, puis End touche pour accéder à la fin du fichier.

Si le fichier est mis à jour, Far Manager le fera défiler automatiquement.

3
anatoly techtonik

Si vous voulez utiliser les ports Win32 de certains utilitaires Unix (plutôt que d'installer Cygwin), je recommande tilitaires GNU pour Win32 .

Plus léger que Cygwin et plus portable.

3
Grant Wagner

Installer MKS Toolkit ... Pour pouvoir exécuter toutes les commandes Unix sous Windows.

La commande est:

tail -f <file-name>  
3
user229580

J'utilise Kiwi Log Viewer. C'est gratuit.

1
user615011

Je pense avoir trouvé un utilitaire répondant au besoin de la fonction de queue dans les fichiers de traitement par lots. Ça s'appelle "mtee", et c'est gratuit. Je l'ai incorporé dans un fichier batch sur lequel je travaille et il fait très bien le travail. Assurez-vous simplement de placer l'exécutable dans un répertoire de l'instruction PATH, et c'est parti.

Voici le lien:

mtee

0
user825233

Vous pouvez aussi essayer WinTail .

0
GJ.

Les visualiseurs de journaux graphiques, bien qu'ils puissent être très utiles pour afficher les fichiers journaux, ne répondent pas au besoin d'un utilitaire de ligne de commande pouvant être incorporé dans des scripts (ou des fichiers de traitement par lots). Souvent, une telle commande simple et polyvalente peut être utilisée dans le cadre d’une solution spécialisée pour un environnement particulier. Les méthodes graphiques ne se prêtent pas facilement à une telle utilisation.

0
user825233