Windows尾部命令的Windows等价物

时间:2008-10-09 14:48:15

标签: windows tail

我正在寻找相当于Unix'tail'的命令,它允许我在写入日志文件时观察日志文件的输出。

26 个答案:

答案 0 :(得分:381)

如果您使用PowerShell,则可以使用:

Get-Content filenamehere -Wait -Tail 30

从下面发布Stefan的评论,所以人们不要错过它

PowerShell 3引入了一个-Tail参数,仅包含最后的x行

答案 1 :(得分:131)

我建议安装类似GNU Utilities for Win32的内容。它最受欢迎,包括尾巴。

答案 2 :(得分:61)

我总是使用Baretail在Windows中进行拖尾。这是免费的,非常好。

编辑:有关Baretail的更好描述,请参阅 this question

答案 3 :(得分:31)

你可以将尾巴作为Cygwin的一部分。

答案 4 :(得分:22)

有很多选项,但是所有这些选项都有更高级功能的缺陷。

  • Windows Server 2003 Tools提供了一个简单的尾部,可以是downloaded with the Resource Kit Tools。它在很多方面都太有限了(锁定后跟文件,缺少像--pid这样的很多选项),但是对于跟踪文件的基本任务也是如此。

  • GnuWin32 tail是错误的(α β γ) - 像-f这样的东西不行。

  • UnxUtils tail似乎更好(-f可行,但是-pid似乎没有,-n但不是--lines = n因-f而失败),但似乎是一个死的项目。< / p>

  • Cygwin是一个很难看的软件,可能只是使用DLL和coreutils package - 但仍然存在像--pid无法使用本机win32进程这样的问题。

    < / LI>

答案 5 :(得分:22)

任何对使用批处理命令的 DOS CMD尾部感兴趣的人(见下文)。

这不是完美的,而且有时会重复。

用法: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

答案 6 :(得分:18)

我使用过Tail For Windows。当然不如使用

tail
那么优雅,但是,你正在使用Windows。 )

答案 7 :(得分:15)

我在答案中没有看到Log Expert

它可以自定义,非常适合浏览日志文件。到目前为止,它是我最好的Windows图形日志查看器。

答案 8 :(得分:12)

如果您根本不想安装任何东西,可以“构建自己的”批处理文件,从标准Windows命令执行该任务。以下是有关如何操作的一些建议。

1)使用 find / c / v“”yourinput.file ,获取输入文件中的行数。输出类似于:

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

2)使用 for / f ,解析此输出以获得数字15.

3)使用设置/ a ,计算需要跳过的头条数

4)使用 for / f“skip = n”跳过头行并回显/处理尾线。

如果我找到时间,我将构建这样一个批处理文件并将其发回此处。

答案 9 :(得分:10)

使用Windows PowerShell,您可以使用:

Get-Content <file> -Wait

答案 10 :(得分:6)

试试Windows Services for UNIX。提供shell,awk,sed等以及尾部。

答案 11 :(得分:6)

我最近使用过Mtail,似乎效果很好。这是GUI类型,如上面提到的baretail。 enter image description here

答案 12 :(得分:5)

Microsoft本身下载尾部命令,Windows Server 2003 Resource Kit Tools的一部分。

答案 13 :(得分:4)

tail包中提供了Windows Resource Kit Tools命令和许多其他命令。

答案 14 :(得分:4)

我刚写了这个小批量脚本。它不像Unix“尾巴”那么复杂,但希望有人可以添加它来改进它,比如将输出限制到文件的最后10行等。如果你改进了这个脚本,请发送它抢劫〜[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

答案 15 :(得分:4)

另一种选择是安装MSYS(比Cygwin更轻量级)。

答案 16 :(得分:4)

DOS的type就像* nux的cat一样,虽然就像cat一样,它会转储整个文件,所以它不是真正的tail,但它会无需下载/安装真正的tail替代品即可获得。

答案 17 :(得分:4)

DOS 没有tail命令;您可以下载GNU尾部的Windows二进制文件和其他GNU工具here

答案 18 :(得分:4)

我更喜欢TailMe,因为可以在一个窗口中同时观看多个日志文件:http://www.dschensky.de/Software/Staff/tailme_en.htm

答案 19 :(得分:3)

安装MKS Toolkit ...这样您就可以在Windows上运行所有Unix命令。

命令是:

tail -f <file-name>  

答案 20 :(得分:3)

Far Manager中,按文件上的 F3 进入标准查看器,然后按 End 键导航到文件末尾。

如果文件已更新,Far Manager将自动滚动它。

答案 21 :(得分:3)

如果你想使用某些Unix实用程序的Win32端口(而不是安装Cygwin),我建议GNU utilities for Win32

比Cygwin更轻,更轻便。

答案 22 :(得分:1)

我正在使用 Kiwi Log Viewer 。它是免费的。

答案 23 :(得分:0)

您也可以尝试WinTail

答案 24 :(得分:0)

图形日志查看器虽然可能非常适合查看日志文件,但不能满足可以合并到脚本(或批处理文件)中的命令行实用程序的需要。通常,这种简单且通用的命令可以用作特定环境的专用解决方案的一部分。图形方法不适合这种用途。

答案 25 :(得分:0)

我想我找到了一个满足批处理文件中tail函数需求的实用程序。它被称为“mtee”,它是免费的。我已将它合并到我正在处理的批处理文件中,它可以很好地完成工作。只需确保将可执行文件放入PATH语句中的目录中,然后就可以了。

这是链接:

mtee