A Windows equivalent of the Unix tail command [clo

2019-01-01 06:20发布

问题:

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.

回答1:

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



回答2:

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



回答3:

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

Edit: for a better description of Baretail see this question



回答4:

You can get tail as part of Cygwin.



回答5:

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

  • The Windows Server 2003 Tools provides a simple tail that can be downloaded with the Resource Kit Tools. It is too limited in many respects (locks followed file, lacks many options like --pid), however will do for the basic task of tracking a file.

  • 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.



回答6:

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


回答7:

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

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



回答8:

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.



回答9:

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.



回答10:

With Windows PowerShell you can use:

Get-Content <file> -Wait


回答11:

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



回答12:

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



回答13:

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



回答14:

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



回答15:

DOS has no tail command; you can download a Windows binary for GNU tail and other GNU tools here.



回答16:

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



回答17:

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


回答18:

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



回答19:

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.



回答20:

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.



回答21:

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

The command is:

tail -f <file-name>  


回答22:

In Far Manager, 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.



回答23:

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



回答24:

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.



回答25:

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



回答26:

You can try WinTail as well.

ََ



标签: windows tail