453

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

4

26 回答 26

531

如果您使用 PowerShell,则此方法有效:

Get-Content filenamehere -Wait -Tail 30

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

PowerShell 3 引入了 -Tail 参数以仅包含最后 x 行

于 2008-10-09T16:42:34.433 回答
143

我建议安装GNU Utilities for Win32 之类的东西。它有最喜欢的,包括尾巴。

于 2008-10-09T14:50:45.030 回答
69

我一直使用Baretail在 Windows 中进行拖尾。它是免费的,而且非常好。

编辑:为了更好地描述 Baretail 看到这个问题

于 2008-10-09T14:52:22.750 回答
33

您可以将 tail 作为Cygwin的一部分。

于 2008-10-09T14:49:16.907 回答
25

任何对使用批处理命令的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
于 2009-08-20T16:45:35.253 回答
24

有很多选项,但是它们都具有更高级功能的缺陷。

  • GnuWin32 tail是错误的(α β γ) - 像 -f 这样的东西根本不起作用。

  • UnxUtils tail似乎更好(-f 有效,但 --pid 似乎无效,-n 但不是 --lines=n 因 -f 而失败),但似乎是一个死项目。

  • Cygwin是一个非常丑陋的糊状物,也许可以只使用 DLL 和coreutils 包- 但仍然存在诸如 --pid 无法与本机 win32 进程一起使用的问题。

于 2008-10-09T16:10:02.237 回答
19

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

尾巴
但是,您使用的是 Windows。;)

于 2008-10-09T14:50:24.720 回答
18

如果您根本不想安装任何东西,您可以“构建您自己的”批处理文件,该批处理文件通过标准 Windows 命令完成这项工作。以下是有关如何执行此操作的一些指示。

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

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

2) 使用for /f解析此输出以获取数字 15。

3)使用set /a,计算需要跳过的标题行数

4) 使用for /f "skip=n"跳过标题行并回显/处理尾行。

如果我有时间,我会建立一个这样的批处理文件并把它发回这里。

编辑: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
于 2008-10-09T15:30:10.350 回答
18

使用 Windows PowerShell,您可以使用:

Get-Content <file> -Wait
于 2009-05-08T21:04:39.507 回答
15

我在这里的答案中没有看到 Log Expert。

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

不幸的是,该软件不再可用。您可以在archive.org上阅读有关它的信息。

于 2011-06-16T08:09:12.843 回答
10

我最近使用了 Mtail,它似乎运行良好。这是上面提到的类似baretail 的GUI 类型。 在此处输入图像描述

于 2011-01-18T09:00:48.137 回答
5

尝试适用于 UNIX 的 Windows 服务。提供shell、awk、sed等以及tail。

更新-:不幸的是,自 2019 年起,该系统在 Microsoft 下载中心不再可用。

于 2008-10-09T14:54:01.810 回答
5

下载 tail 命令,部分Windows Server 2003 Resource Kit Tools来自Microsoft本身。

于 2009-05-08T20:41:56.067 回答
4

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

于 2009-04-22T11:27:25.413 回答
4

DOS没有tail命令;您可以在此处下载 GNU tail 和其他 GNU 工具的 Windows 二进制文件。

于 2009-05-08T20:42:46.923 回答
4

DOS 的type工作类似于 *nux's cat,虽然就像cat,它确实转储了整个文件,所以它不是真正的tail,但它可以在紧要关头使用,而无需下载/安装真正的tail替代品。

于 2009-05-08T20:45:43.343 回答
4

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

于 2009-05-08T20:51:06.870 回答
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
于 2011-05-24T00:31:27.273 回答
4

Windows 资源工具包工具包中提供了该tail命令和许多其他命令。

于 2012-05-24T02:19:26.830 回答
3

如果您想使用某些 Unix 实用程序的 Win32 端口(而不是安装 Cygwin),我推荐Win32 的 GNU 实用程序

比 Cygwin 更轻,更便携。

于 2008-10-09T14:51:17.527 回答
3

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

命令是:

tail -f <file-name>  
于 2009-12-11T11:31:41.467 回答
3

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

如果文件被更新,Far Manager 会自动滚动它。

于 2011-07-15T05:55:19.543 回答
0

你也可以试试WinTail

于 2010-08-11T08:19:58.747 回答
0

我正在使用Kiwi Log Viewer。免费。

于 2011-02-13T12:07:51.790 回答
0

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

于 2011-07-01T16:40:55.580 回答
0

我想我找到了一个实用程序,可以满足批处理文件中尾部功能的需求。它叫做“mtee”,而且是免费的。我已将它合并到我正在处理的批处理文件中,它的工作非常好。只需确保将可执行文件放入 PATH 语句中的目录中,然后就可以了。

这是链接:

mtee

于 2011-07-01T18:27:20.957 回答