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.
I'd suggest installing something like GNU Utilities for Win32. It has most favourites, including tail.
tail
on a 2GB file and it choked. more
worked fine (at least viewing the start of the file). –
Summitry head
but not tail
... Ideas? –
Concurrence tail
:) –
Concurrence zsh: command not found tail
–
Stilton 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
tail
can be useful) (2) it's not as dynamic as I'd like (maybe due to OS/filesystem changes between my setup and other posters?). That is, I determined that the shell doing Get-Content
sometimes doesn't update until I run dir
in another shell. –
Toffey cat
which is an alias for Get-Content, and is easier to remember for a linux guy! –
Bots Get-Content myTestLog.log -wait | where { $_ -match “WARNING” }
nicely filters the log using regexes too stackify.com/11-ways-to-tail-a-log-file-on-windows-unix –
Avalon Get-Content -Tail 100 -Wait .\logfile.log
? –
Cretinism Select-Content
in conjunction withGet-Content
to output the last few lines: Get-Content c:\scripts\test.txt | Select-Object -last 5
https://mcmap.net/q/75157/-how-do-i-display-a-text-file-content-in-cmd –
Gudrin Get-Content filenamehere -Wait -Tail 100
–
Plainlaid -Tail
and it's horribly buggy and tends to output way more lines that I ask for. I suspect the log file I'm reading has a mixture of line ending styles that PowerShell can't deal with, but I'm too lazy at the moment to confirm that. –
Cherimoya tail -f <file_name>
is working in powershell (Win7) –
Sigil tail -f | grep string
in *nix. Get-Content -Path "file.txt" -tail 30 -wait | Select-String 'string'
–
Virescent Powershell Get-Content %1% -Wait
. –
Carbonous --noprofile
option –
Prelature I'd suggest installing something like GNU Utilities for Win32. It has most favourites, including tail.
tail
on a 2GB file and it choked. more
worked fine (at least viewing the start of the file). –
Summitry head
but not tail
... Ideas? –
Concurrence tail
:) –
Concurrence zsh: command not found tail
–
Stilton I've always used Baretail for tailing in Windows. It's free and pretty nice.
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
ping 127.0.0.1 -n 2 > nul
before goto followloop
. it sends two pings and waits 1 in sec between. so it would let cpu live!:D –
Archfiend timeout /t 2
? –
Ichabod 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.
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
With Windows PowerShell you can use:
Get-Content <file> -Wait
I've used Tail For Windows. Certainly not as elegant as using
tailbut then, you're using 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.
I've used Mtail recently and it seems to work well. This is the GUI type like baretail mentioned above.
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.
Download the tail command, part of Windows Server 2003 Resource Kit Tools
from Microsoft itself.
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
DOS has no tail command; you can download a Windows binary for GNU tail and other GNU tools here.
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.
Another option would be to install MSYS (which is more leightweight than Cygwin).
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
echo.
with a trailing dot on the word(and not as a separate argument) it'll print a single new line. –
Sambo The tail
command and many others are available in the Windows Resource Kit Tools package.
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.
Install MKS Toolkit... So that you can run all Unix commands on Windows.
The command is:
tail -f <file-name>
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.
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.
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:
I'm using Kiwi Log Viewer. It's free.
© 2022 - 2024 — McMap. All rights reserved.