A Windows equivalent of the Unix tail command

WindowsTail

Windows Problem Overview


I'm looking for the equivalent of the Unix 'tail' command that will allow me to watch the output of a log file while it is being written to.

Windows Solutions


Solution 1 - Windows

If you use PowerShell then this works:

Get-Content filenamehere -Wait -Tail 30

Posting Stefan's comment from below, so people don't miss it

PowerShell 3 introduces a -Tail parameter to include only the last x lines

Solution 2 - Windows

I'd suggest installing something like GNU Utilities for Win32. It has most favourites, including tail.

Solution 3 - Windows

I've always used Baretail for tailing in Windows. It's free and pretty nice.

Solution 4 - Windows

You can get tail as part of http://cygwin.com/">Cygwin</a>;.

Solution 5 - Windows

There are quite a number of options, however all of them have flaws with more advanced features.

  • GnuWin32 tail is buggy (α β γ) - things like -f just plain don't work.

  • UnxUtils tail seems better (-f works, but --pid seems not to, -n but not --lines=n fails with -f), but appears to be a dead project.

  • Cygwin is a big ugly mush, could perhaps just use the DLL and coreutils package - but still has problems like --pid not working with native win32 processes.

Solution 6 - Windows

Anybody interested in a DOS CMD tail using batch commands (see below).

It's not prefect, and lines sometime repeat.

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

Solution 7 - Windows

I've used Tail For Windows. Certainly not as elegant as using

tail
but then, you're using Windows. ;)

Solution 8 - Windows

If you do not want to install anything at all you can "build your own" batch file that does the job from standard Windows commands. Here are some pointers as to how to do it.

  1. Using find /c /v "" yourinput.file, get the number of lines in your input file. The output is something like:

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

  2. Using for /f, parse this output to get the number 15.

  3. Using set /a, calculate the number of head lines that needs to be skipped

  4. Using for /f "skip=n" skip the head lines and echo/process the tail lines.

If I find the time, I will build such a batch file and post it back here.

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

Solution 9 - Windows

With Windows PowerShell you can use:

Get-Content <file> -Wait

Solution 10 - Windows

I haven't seen Log Expert anywhere among answers here.

It's customizable and is quite good for going around log files. So far it's the best Windows graphical log viewer for me.

Unfortunately, this software is no longer available. You can read about it on archive.org.

Solution 11 - Windows

I've used Mtail recently and it seems to work well. This is the GUI type like baretail mentioned above. enter image description here

Solution 12 - Windows

Try Windows Services for UNIX. Provides shells, awk, sed, etc. as well as tail.

Update -: Unfortunately, as of 2019 this system is no longer available on the Microsoft Download Center.

Solution 13 - Windows

Download the tail command, part of Windows Server 2003 Resource Kit Tools from Microsoft itself.

Solution 14 - Windows

I prefer TailMe because of the possibility to watch several log files simultaneously in one window: http://www.dschensky.de/Software/Staff/tailme_en.htm

Solution 15 - Windows

DOS has no tail command; you can download a Windows binary for GNU tail and other GNU tools http://unxutils.sourceforge.net/">here</a>;.

Solution 16 - Windows

DOS's type works like *nux's cat, though just like cat, it does dump the whole file, so it's not really a true tail, but it's going to be available in a pinch without downloading/installing a true tail substitute.

Solution 17 - Windows

Another option would be to install MSYS (which is more leightweight than Cygwin).

Solution 18 - Windows

I just wrote this little batch script. It isn't as sophisticated as the Unix "tail", but hopefully someone can add on to it to improve it, like limiting the output to the last 10 lines of the file, etc. If you do improve this script, please send it to me at robbing [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

Solution 19 - Windows

The tail command and many others are available in the Windows Resource Kit Tools package.

Solution 20 - Windows

If you want to use Win32 ports of some Unix utilities (rather than installing Cygwin), I recommend GNU utilities for Win32.

Lighter weight than Cygwin and more portable.

Solution 21 - Windows

Install MKS Toolkit... So that you can run all Unix commands on Windows.

The command is:

tail -f <file-name>  

Solution 22 - Windows

In [Far Manager][1], press F3 on a file to enter the standard viewer, then the End key to navigate to the end of file.

If the file is updated, Far Manager will scroll it automatically.

[1]: https://en.wikipedia.org/wiki/Far_Manager "Far Manager"

Solution 23 - Windows

You can try WinTail as well.

ََ

Solution 24 - Windows

I'm using Kiwi Log Viewer. It's free.

Solution 25 - Windows

Graphical log viewers, while they might be very good for viewing log files, don't meet the need for a command line utility that can be incorporated into scripts (or batch files). Often such a simple and general-purpose command can be used as part of a specialized solution for a particular environment. Graphical methods don't lend themselves readily to such use.

Solution 26 - Windows

I think I have found a utility that meets the need for the tail function in batch files. It's called "mtee", and it's free. I've incorporated it into a batch file I'm working on and it does the job very nicely. Just make sure to put the executable into a directory in the PATH statement, and away you go.

Here's the link:

mtee

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionLiamView Question on Stackoverflow
Solution 1 - WindowsAlexView Answer on Stackoverflow
Solution 2 - WindowsRyan DuffieldView Answer on Stackoverflow
Solution 3 - WindowsInstantsoupView Answer on Stackoverflow
Solution 4 - WindowsQuentinView Answer on Stackoverflow
Solution 5 - Windowsgz.View Answer on Stackoverflow
Solution 6 - WindowsformatguyView Answer on Stackoverflow
Solution 7 - WindowsJakeView Answer on Stackoverflow
Solution 8 - WindowsPhilibert PerusseView Answer on Stackoverflow
Solution 9 - WindowsOscarRyzView Answer on Stackoverflow
Solution 10 - WindowsGrzegorz GralakView Answer on Stackoverflow
Solution 11 - WindowsVijayView Answer on Stackoverflow
Solution 12 - WindowsDaveView Answer on Stackoverflow
Solution 13 - WindowsismailView Answer on Stackoverflow
Solution 14 - WindowsB.E.View Answer on Stackoverflow
Solution 15 - WindowsTomer GabelView Answer on Stackoverflow
Solution 16 - WindowsUberfuzzyView Answer on Stackoverflow
Solution 17 - WindowsDirk VollmarView Answer on Stackoverflow
Solution 18 - WindowsAndreyView Answer on Stackoverflow
Solution 19 - WindowsucfjeffView Answer on Stackoverflow
Solution 20 - WindowsGrant WagnerView Answer on Stackoverflow
Solution 21 - Windowsuser229580View Answer on Stackoverflow
Solution 22 - Windowsanatoly techtonikView Answer on Stackoverflow
Solution 23 - WindowsGJ.View Answer on Stackoverflow
Solution 24 - Windowsuser615011View Answer on Stackoverflow
Solution 25 - Windowsuser825233View Answer on Stackoverflow
Solution 26 - Windowsuser825233View Answer on Stackoverflow