Un équivalent Windows de la commande Unix tail [fermé]


410

Je cherche l'équivalent de la commande 'tail' d'Unix qui me permettra de regarder la sortie d'un fichier journal pendant qu'il est écrit.


est-ce que cela aide? http://malektips.com/xp_dos_0001.html http://commandwindows.com/server2003tools.htm Voici le lien Microsoft direct. Je l'ai testé sur ma machine (juste par curiosité et parce que j'en ai peut-être besoin) et ça marche très bien.
johnny

1
Il y a en fait de la queue pour XP, c'est juste que Microsoft ne l'installe pas avec la version standard de XP; ils l'ont empaqueté dans des «outils de kit de ressources de Windows Server 2003». Vous pouvez l'obtenir ici: microsoft.com/downloads/…
Matt Poush

1
Ce n'est pas dupe, mais voyez ici stackoverflow.com/questions/247234/…
Martin Beckett

mobaXTerm, c'est gratuit et a un journal de plugins, vous pouvez faire tail -f /drives/c/logs/mylog.log
surfealokesea

3
Je ne pense pas que cela aurait dû être fermé, car j'ai besoin de la même chose pour déboguer le traçage dans mon application Windows. Il s'agit des "outils logiciels couramment utilisés par les programmeurs", qui est sur le sujet
kristianp

Réponses:


137

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


5
J'ai juste essayé d'utiliser GNU tailsur un fichier de 2 Go et ça s'est étouffé. morea bien fonctionné (au moins l'affichage du début du fichier).
Eric J.

@EricJ., Pareil pour moi. Sur un fichier de 3 Go je peux faire headmais pas tail... Des idées?
Alphaaa

@Alphaaa: Je soupçonne que cela a à voir avec les appels OS que GNU Utilities utilise. Voir stackoverflow.com/a/4003487/141172
Eric J.24

@EricJ., Merci, cela semble vraiment pertinent. Mais je viens de réaliser qu'il est plus facile pour moi d'utiliser une solution de contournement: je vais juste écrire un script simple qui fait un tail:)
Alphaaa

1
Ici, je crois que c'est une meilleure solution: stackoverflow.com/questions/4426442/…
Dung

442

Si vous utilisez PowerShell, cela fonctionne:

Get-Content filenamehere -Wait -Tail 30

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

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


13
En fait, ce n'est pas dynamique
Jey Geethan

16
C'est bon à savoir; Merci. Mais j'ai eu quelques problèmes avec (sous Windows 7). (1) il affiche l'intégralité du fichier (pas bon pour un fichier journal massif, c'est pourquoi tailpeut être utile) (2) il n'est pas aussi dynamique que je le souhaiterais (peut-être en raison de changements de système d'exploitation / système de fichiers entre ma configuration et d'autres affiches ?). Autrement dit, j'ai déterminé que le shell faisant Get-Contentparfois ne se met pas à jour jusqu'à ce que j'exécute dirdans un autre shell.
mpontillo

10
Je pense qu'il vaut la peine de mentionner que PowerShell mettra en pause le défilement / sortie si vous sélectionnez quelque chose dans la fenêtre du terminal pour vous donner une chance de lire, copier / coller, etc. Si vous appuyez sur Entrée, le défilement reprendra.
cbednarski

19
PowerShell 3 introduit un paramètre -Tail pour inclure uniquement les dernières lignes x
Stefan Haberl

8
La bonne réponse pour Powershell ne devrait-elle pas être quelque chose comme ça Get-Content -Tail 100 -Wait .\logfile.log?
Henno Vermeulen

62

J'ai toujours utilisé Baretail pour suivre dans Windows. C'est gratuit et plutôt sympa.

Edit: pour une meilleure description de Baretail voir cette question


Cela a fini par être la 1ère solution qui a fonctionné pour moi sur [gulp] Windows Server 2003 R2 SP1! Super facile avec l'installateur, a travaillé pour le tailing wasily dès la sortie de la boîte :)
cellepo

Télécharger et exécuter des exécutables non signés sur HTTP n'est probablement pas une bonne idée. À tout le moins, il faut télécharger via leur site HTTPS .
Zero3

Je trouve étonnant qu'ils continuent à maintenir le site et à mettre à jour le certificat SSL à ce jour, alors que le logiciel n'a pas été mis à niveau depuis 2006. Cela fonctionne bien cependant. Exactement ce dont j'avais besoin. Windows Defender ne trouve aucune menace.
Lionet Chen


24

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

Ce n'est pas 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

C'est intelligent, et je suis tout à fait d'utiliser les fonctionnalités existantes lorsque le téléchargement d'un outil n'est pas une option! Ce code consommera du CPU, car il tournera continuellement dans le suivi de -f.
armstrhb

1
eu le même problème avec le téléchargement et la consommation de CPU! ajouté cette ligne ping 127.0.0.1 -n 2 > nulavant goto followloop. il envoie deux pings et attend 1 seconde entre les deux. donc ça laisserait le cpu vivre!: D
Mohsen ZareZardeyni

Impressionnant! Merci beaucoup
John Fairbanks

1
pourquoi utiliser ping si vous pouviez utiliser timeout /t 2?
namezero

23

Il existe un certain nombre d'options, mais toutes ont des défauts avec des fonctionnalités plus avancées.

  • GnuWin32 tail est buggé ( α β γ ) - des choses comme -f ne fonctionnent tout simplement pas.

  • La queue UnxUtils semble meilleure (-f fonctionne, mais --pid ne semble pas, -n mais pas --lines = n échoue avec -f), mais semble être un projet mort.

  • Cygwin est une grosse bouillie moche, pourrait peut-être simplement utiliser le package DLL et coreutils - mais a toujours des problèmes comme --pid ne fonctionne pas avec les processus Win32 natifs.


19

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

queue
mais ensuite, vous utilisez Windows. ;)


Je seconde Tail pour Windows. Je l'aime parce que je peux ouvrir et surveiller plusieurs fichiers dans la même fenêtre.
Paul

la méthode powershell gc -tail ne fonctionne pas si vous êtes sur un Posh 1 ou Posh 2.x. La fonctionnalité gc -tail a été ajoutée dans Posh 3.0.
user1390375

16

Avec Windows PowerShell, vous pouvez utiliser:

Get-Content <file> -Wait

15

Je n'ai vu Log Expert nulle part parmi les réponses ici.

Il est personnalisable et est assez bon pour parcourir les fichiers journaux. Jusqu'à présent, c'est le meilleur visualiseur de journaux graphiques Windows pour moi.

Malheureusement, ce logiciel n'est plus disponible. Vous pouvez en lire plus sur archive.org .


J'adore les fonctionnalités de Log Expert, mais mon expérience a été boguée avec Win 7 64 bits.
Clay

Je manque la fonctionnalité "vue claire".
Daniel Hári

13

Si vous ne voulez rien installer du tout, vous pouvez "créer votre propre" fichier batch qui fait le travail à partir des commandes Windows standard. Voici quelques conseils sur la façon de procéder.

1) À l'aide de 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 for / f , analysez cette sortie pour obtenir le nombre 15.

3) À l'aide de set / a , calculez le nombre de lignes de tête qui doivent être sautées

4) En utilisant for / f "skip = n" sautez les lignes de tête et faites écho / traitez les lignes de queue.

Si je trouve le temps, je vais construire un tel fichier batch et le poster ici.

ÉDITER: 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

5
Voici le lot de l'explication précédente. Il affiche les 10 dernières lignes du fichier actuel: ____ pour les jetons / f "= 3" %% f dans ('find / c / v ""% 0') ne définissez nbLines = %% f ____ set / a nbSkippedLines = % nbLines% -10 ____ for / f "skip =% nbSkippedLines% delims =" %% d in (% 0) do echo %% d
Nicolas

1
C'est exactement ce que l'affiche veut, et ça marche très bien.
Jackie Yeh

Merci pour le code! Je l'ai ajouté à la réponse avec le numéro de paramètre corrigé et un supplémentaire au nombre de lignes. Notez qu'il affichera les lignes une sortie. PS: Je l'ai utilisé pour suivre un fichier de 1,5 Go et j'ai obtenu les résultats en seulement 15 secondes.
Leopoldo Sanczyk

En fait, à l'étape 4, il serait encore mieux, je pense, d'utiliser la commande «more» qui prend un paramètre quant au nombre de lignes à sauter. Encore plus vite, je pense.
Philibert Perusse

8

J'ai utilisé Mtail récemment et il semble bien fonctionner. Il s'agit du type d'interface graphique comme la barre de connexion mentionné ci-dessus. entrez la description de l'image ici



5

Essayez les services Windows pour UNIX . Fournit coquilles, awk, sed, etc. ainsi que queue.

Mise à jour -: Malheureusement, à partir de 2019, ce système n'est plus disponible sur le Centre de téléchargement Microsoft.


1
Cela a des problèmes sur Win7 et plus récent.
Doug Wilson

1
Vraiment? Vous vous précipitez sur des réponses de quatre ans à vote négatif? Façon de contribuer.
Dave

9
@Dave: Même si la question est ancienne, les gens la regardent toujours pour trouver la meilleure réponse. Si une réponse d'il y a même presque 5 ans n'est plus pertinente ou bonne, alors pourquoi ne devrait-on pas la déprécier? Tout ce site vise à obtenir plus rapidement des informations précieuses - aujourd'hui, il n'y a pas 5 ans.
Oliver

1
@Hellfire - vous devriez éditer la réponse à condition que cela ne fonctionne pas avec Wwindows 7. Il est stupide de simplement commenter.
Preet Sangha


4

DOS n'a pas de commande tail; vous pouvez télécharger un binaire Windows pour GNU tail et d'autres outils GNU ici .



4

Le DOS typefonctionne comme * nux cat, bien que tout comme cat, il vide tout le fichier, donc ce n'est pas vraiment vrai tail, mais il sera disponible à la rigueur sans télécharger / installer un véritable tailsubstitut.


4

Je viens d'écrire ce petit script batch. Il n'est pas aussi sophistiqué que la "queue" d'Unix, mais j'espère que quelqu'un pourra y ajouter des améliorations, comme limiter la sortie aux 10 dernières lignes du fichier, etc. Si vous améliorez ce script, veuillez l'envoyer à moi au vol ~ [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

belle idée en utilisant la commande "type", mais vous ne pouvez pas y accéder!
eadmaster

Cela ne fait que recharger le fichier texte.

la version par lots d'écho a un comportement étrange, si aucun argument n'est donné, elle se termine, mais si vous appelez la commande comme echo.avec un point de fin sur le mot (et non comme argument séparé), elle imprimera une seule nouvelle ligne.
scragar




3

Dans Far Manager , appuyez F3sur un fichier pour accéder à la visionneuse standard, puis sur la Endtouche pour naviguer jusqu'à la fin du fichier.

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



0

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 qui peut être incorporé dans des scripts (ou fichiers de commandes). Souvent, une commande aussi 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

Je pense avoir trouvé un utilitaire qui répond au besoin de la fonction queue dans les fichiers batch. Cela 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 mettre l'exécutable dans un répertoire dans l'instruction PATH, et c'est parti.

Voici le lien:

mtee

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.