Unixのtailコマンドに相当するWindows版[終了]


410

ログファイルへの書き込み中にログファイルの出力を監視できる、Unixの「tail」コマンドに相当するものを探しています。


これは役に立ちますか?http://malektips.com/xp_dos_0001.html http://commandwindows.com/server2003tools.htmこれ は、直接のMicrosoftリンクです。私はそれを自分のマシンでテストしました(好奇心から、必要になる可能性があるため)。
ジョニー

1
実際、XP にテールがあります。それは、MicrosoftがXPの標準バージョンではインストールしないことです。彼らはそれを「Windows Server 2003 Resource Kit Tools」にパッケージ化しました。あなたはここでそれを得ることができます:microsoft.com/downloads/...
マットPoush

1
ないexacltyだまされやすい人が、ここを参照してくださいstackoverflow.com/questions/247234/...
マーティンベケット

mobaXTerm、それは無料で、プラグインのログがあり、tail -f /drives/c/logs/mylog.logを実行できます
surfealokesea

3
私のWindowsアプリケーションでトレースをデバッグするためにこれと同じものが必要なので、これは閉じられるべきではないと思います。それは話題になっている「プログラマーが一般的に使用するソフトウェアツール」についてです
kristianp

回答:


137

Win32用のGNUユーティリティのようなものをインストールすることをお勧めします。それは尾を含むほとんどのお気に入りがあります。


5
tail2 GBのファイルでGNUを使用しようとしたところ、窒息しました。 more正常に動作しました(少なくともファイルの先頭を表示)。
Eric

@EricJ。、私も同じです。3GBのファイルでできることはできますheadtail… できませんか?
Alphaaa 2013

@Alphaaa:GNU Utilitiesが使用するOS呼び出しに関係しているのではないかと思います。stackoverflow.com/a/4003487/141172を
エリックJ.

@EricJ。、ありがとう、それは確かに関連があるようです。しかし、私は回避策を使用する方が簡単であることに気づきました。私はtail:) を実行する単純なスクリプトを作成するだけです
Alphaaa

1
ここで私はよりよい解決策であると考えている:stackoverflow.com/questions/4426442/...
ズン

442

PowerShellを使用している場合、これは機能します。

Get-Content filenamehere -Wait -Tail 30

ステファンのコメントを下から投稿して、見逃さないように

PowerShell 3では、最後のx行のみを含める-Tailパラメーターが導入されています


13
実際、これは動的ではありません
Jey Geethan

16
これは知っておくと便利です。ありがとう。しかし、(Windows 7で)いくつか問題がありました。(1)ファイル全体を表示します(大量のログファイルには適していないため、tail便利な場合があります)(2)希望するほど動的ではありません(おそらく、セットアップと他のポスター間のOS /ファイルシステムの変更が原因です) ?)。つまり、別のシェルでGet-Content実行するまで、実行dir中のシェルが更新されない場合があると判断しました。
mpontillo

10
ターミナルウィンドウ内で何かを選択して読み取り、コピー、貼り付けなどの機会を与えると、PowerShellがスクロール/出力を一時停止することに言及する価値があると思います。Enterキーを押すと、スクロールが再開されます。
cbednarski

19
PowerShell 3では、最後のx行のみを含めるための-Tailパラメーターが導入されています
Stefan Haberl 2013

8
したがって、Powershellの正しい答えは次のようになりGet-Content -Tail 100 -Wait .\logfile.logますか?
Henno Vermeulen 2016

62

私はWindowsのテーリングに常にBaretailを使用してきました。それは無料でかなりいいです。

編集:ベアテイルのより良い説明については、この質問を参照してください


これは、[gulp] Windows Server 2003 R2 SP1で動作する最初のソリューションになりました。インストーラーで非常に簡単、箱から出してすぐにテーリングを行いました:)
cellepo

署名されていない実行可能ファイルをHTTP経由でダウンロードして実行することは、おそらくお勧めできません。少なくとも、HTTPSサイトからダウンロードする必要があります。
Zero3

彼らがサイトを維持し、現在までSSL証明書を更新し続けているのは驚くべきことですが、ソフトウェアは2006年以降アップグレードされません。まさに私が必要としたもの。Windows Defenderは脅威を検出しません。
Lionet Chen、


24

バッチコマンドを使用した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

これは賢いことであり、ツールのダウンロードがオプションではないときに既存の機能を利用することについて私はすべてです!ただし、このコードは-fのフォローアップで継続的にスピンするため、CPUを消費します。
armstrhb 2013年

1
ダウンロードとCPUを食べることで同じ問題がありました!ping 127.0.0.1 -n 2 > nul前にこの行を追加しましたgoto followloop。2つのpingを送信し、1秒間隔で待機します。そのため、CPUがライブになります!:D
Mohsen ZareZardeyni 2017

驚くばかり!どうもありがとう
ジョンフェアバンクス

1
利用できるのになぜpingを使うのtimeout /t 2ですか?
namezero、

23

かなりの数のオプションがありますが、それらのすべてに、より高度な機能に欠陥があります。

  • GnuWin32テールはバグがある(α β γ) - -fのようなものは、単なる仕事をしません。

  • UnxUtilsテールはより良いようです(-fは機能しますが、-pidは機能しませんが、-nは--f =で失敗しません)-デッドプロジェクトのようです。

  • Cygwinは非常に醜いドロドロで、おそらくDLLとcoreutilsパッケージを使用するだけかもしれませんが、それでも--pidがネイティブのwin32プロセスで動作しないなどの問題があります。


19

Tail For Windowsを使用しました。確かに使用するほどエレガントではありません

しかし、その後はWindowsを使用しています。;)


Windows用の2番目のテールです。同じウィンドウで複数のファイルを開いて監視できるので、気に入っています。
ポール

Powershell gc -tail方法は、Posh 1またはPosh 2.xを使用している場合は機能しません。gc -tail機能はPosh 3.0で追加されました。
user1390375

16

Windows PowerShellでは、以下を使用できます。

Get-Content <file> -Wait

15

ここで答えの中にLog Expertを見たことがありません。

これはカスタマイズ可能で、ログファイルを移動するのに非常に適しています。これまでのところ、これは私にとって最高のWindowsグラフィカルログビューアです。

残念ながら、このソフトウェアはご利用いただけません。これについては、archive.orgで読むことができます。


私はLog Expertの機能を気に入っていますが、Win 7 64ビットでのLog Expertの経験にはバグがあります。
クレー

「クリアビュー」機能がありません。
DanielHári2015

13

何もインストールしたくない場合は、標準の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

5
これは前の説明のバッチです。現在のファイルの最後の10行を表示します:____ for / f "tokens = 3" %% f in( 'find / c / v ""%0')do set nbLines = %% f ____ set / a nbSkippedLines = %nbLines%-10 ____ for / f "skip =%nbSkippedLines%delims =" %% d in(%0)do echo %% d
Nicolas

1
これはまさにポスターが望んでいることであり、うまく機能します。
ジャッキー・イェ2016年

コードをありがとう!パラメータ番号を修正し、行数に1を追加して回答に追加しました。出口の行が表示されることに注意してください。PS:私はそれを1.5Gbファイルの末尾に使用して、わずか15秒で結果を得ました。
Leopoldo Sanczyk

実際には、ステップ4で、スキップする行数に関するパラメーターをとるコマンド 'more'を使用する方がよいと思います。もっと速いと思います。
Philibert Perusse


5

Microsoft自体の一部であるtailコマンドをダウンロードWindows Server 2003 Resource Kit Toolsます


1
リンクがMicrosoftをポイントしているように見えるのは奇妙だと思いませんか?:)
トマラック2009年


5

Windows Services for UNIXをお試しください。シェル、awk、sedなど、および尾を提供します。

更新 -:残念ながら、2019年以降、このシステムはMicrosoftダウンロードセンターで利用できなくなりました。


1
これは、Win7以降では問題があります。
Doug Wilson

1
本当に?あなたは4年前の回答を反対投票して走っていますか?貢献する方法。
Dave

9
@Dave:質問は古いですが、人々は依然として最良の答えを見つけようとしてそれを見ています。ほぼ5年前からの回答がもはや関連性がないか、または適切ではない場合、なぜそれを否定すべきではありませんか?このサイト全体は、貴重な情報をより速く取得するためのものです-今日ではなく、5年前。
Oliver

1
@Hellfire-Wwindows 7では動作しないという条件で回答を編集する必要があります。コメントするだけでは馬鹿げています。
Preet Sangha 2014

4

1つのウィンドウで複数のログファイルを同時に監視できる可能性があるため、TailMeを使用します。http://www.dschensky.de/Software/Staff/tailme_en.htm


4

DOSに tailコマンドはありません。こちらから、GNU tailおよびその他のGNUツール用のWindowsバイナリをダウンロードできます。



4

DOSはtype* nuxのcatようcatに動作しますが、と同様に、ファイル全体をダンプするので、実際にはtrue tailではありませんが、実際のtail代替物をダウンロード/インストールしなくても、すぐに使用できます。


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

「type」コマンドを使用して良いアイデアですが、それにパイプすることはできません!
eadmaster

これは単にテキストファイルをリロードし続けるだけです。

echoのバッチバージョンは奇妙な動作をしますが、引数を指定しないと終了しますがecho.、単語の末尾にドットを付けて(個別の引数としてではなく)コマンドを呼び出すと、新しい行が1つ出力されます。
scragar 2014

4

tailコマンドおよび他の多くで利用可能なWindowsリソースキットツールのパッケージ。


私はこのtailコマンドを使用してみましたが、tail -nの場合、実際には最後のn + 1行が出力されるようです
ajs410






0

グラフィカルなログビューアは、ログファイルの表示には非常に適しているかもしれませんが、スクリプト(またはバッチファイル)に組み込むことができるコマンドラインユーティリティの必要性を満たしていません。多くの場合、このようなシンプルで汎用的なコマンドは、特定の環境に特化したソリューションの一部として使用できます。グラフィカルな方法は、そのような用途にすぐには役立ちません。



0

バッチファイルのテール関数のニーズを満たすユーティリティを見つけたと思います。「mtee」と呼ばれ、無料です。これを作業中のバッチファイルに組み込んだので、非常にうまく機能します。実行可能ファイルをPATHステートメントのディレクトリに配置してください。

ここにリンクがあります:

mtee

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.