Um equivalente Windows do comando tail do Unix [fechado]
Estou à procura do equivalente do comando 'tail' do Unix que me permitirá ver a saída de um ficheiro de Registo enquanto está a ser escrito.
26 answers
Eu sugeria instalar algo comoutilitários GNU para o Win32 . Tem muitos favoritos, incluindo cauda.
Se usar o PowerShell então isto funciona:
Get-Content filenamehere -Wait -Tail 30
Postando o comentário do Stefan de baixo,para que as pessoas não o percam.
PowerShell 3 introduz um parâmetro a-Tail para incluir apenas as últimas linhas x
Sempre useiO Baretail para seguir as janelas. É grátis e muito bom.
Editar: para uma melhor descrição do Baretail ver esta questão
Há um grande número de opções, no entanto todas elas têm falhas com características mais avançadas.
O Windows Server 2003 Tools oferece uma cauda simples que pode ser obtida com as ferramentas do kit de Recursos . É muito limitado em muitos aspectos (bloqueios seguido de arquivo, falta muitas opções como --pid), no entanto, vai fazer para a tarefa básica de rastrear um arquivo.
GnuWin32 tail is buggy (α β [[7]}] - coisas como o f simplesmente não funcionam.
UnxUtils cauda parece melhor (-f funciona, mas --pid parece não, -n, mas não --lines=n falha com -f), mas parece ser um morto projeto.
O Cygwin é uma mush grande e feia, talvez pudesse apenas usar o pacote DLL e do coreutils - mas ainda tem problemas como o --pid não trabalhar com processos nativos do win32.
Qualquer pessoa interessada emdos cmd tail usando comandos em lote (ver abaixo)
Não é prefeito e as linhas repetem-se.
Utilização: cauda.MTD d cauda.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
Useicauda para Janelas . Certamente não tão elegante como usar
Mas estás a usar o Windows. ;)Eu não vi um especialista em Log em nenhum lugar entre as respostas aqui.
É personalizável e é muito bom para ir em torno de arquivos de log. Até agora é o melhor visualizador de log gráfico do Windows para mim.
Se não quiser instalar nada, pode "construir o seu próprio" ficheiro em lote que faz o trabalho a partir dos comandos normais do Windows. Aqui estão algumas dicas sobre como fazê-lo.
1) Usando find / c / v "" yourinput.file , obtenha o número de linhas no seu ficheiro de entrada. A saída é algo como:
---------- T.TXT: 15
2) Usando para /f , analise esta saída para obter o número 15.
3) Usando set / a , calcular o número de cabeçalhos que precisa de ser ignorado
4) Usar para /f "skip=n" saltar as linhas de cabeça e echo/processar as linhas de cauda.
Se eu encontrar o tempo, eu vou construir tal arquivo de lote e postá-lo de volta aqui.
Com o Windows PowerShell pode usar:
Get-Content <file> -Wait
Tente os Serviços Windows para o UNIX . Fornece conchas, awk, sed, etc. assim como a cauda.
UseiO Mtail recentemente e parece funcionar bem. Este é o tipo de GUI como baretail mencionado acima.
Obtenha o comando tail, parte de Windows Server 2003 Resource Kit Tools
a partir de da própria Microsoft.
Prefiro o TailMe por causa da possibilidade de ver vários ficheiros de Registo simultaneamente numa janela: http://www.dschensky.de/Software/Staff/tailme_en.htm
O dos não tem nenhum comando tail; você poderá obter um binário Windows para a GNU tail e outras ferramentas GNU aqui.
Outra opção seria instalarO MSYS (que é mais peso-vivo do que o Cygwin).
O comando tail e muitos outros estão disponíveis no Pacote de Ferramentas Windows Resource Kit de http://www.microsoft.com/en-us/download/details.aspx?id=17657
@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
Se quiser usar as portas Win32 de alguns utilitários Unix (em vez de instalar o Cygwin), recomendo utilitários GNU para o Win32.
Peso mais leve que Cygwin e mais portátil.
Instalar o kit de ferramentas MKS.. para que você possa executar todos os comandos unix no windows.
A cauda-f é o comando.
DOS type
funciona como *nux do cat
, embora apenas como cat
, não copiar o arquivo inteiro, por isso não é realmente um verdadeiro tail
, mas vai estar disponível em uma pitada, sem baixar/instalar um verdadeiro tail
substituir.
In Far Manager press F3 on a file to enter standard viewer, then End key to navegar até ao fim do ficheiro. Se o arquivo for atualizado-Far irá deslocá-lo automaticamente.
Estou a usar Visualizador de Log Kiwi . É grátis.
Os telespectadores gráficos de log, embora possam ser muito bons para ver arquivos de log, não atendem à necessidade de um utilitário de linha de comando que possa ser incorporado em scripts (ou arquivos em lote). Muitas vezes um comando simples e de propósito geral pode ser usado como parte de uma solução especializada para um ambiente particular. Métodos gráficos não se prestam prontamente a tal uso.
Acho que encontrei um utilitário que atende à necessidade da função de cauda em arquivos de lote. Chama-se" mtee " e é grátis. Incorporei-o num ficheiro em que estou a trabalhar e faz o trabalho muito bem. Apenas certifique-se de colocar o executável em um diretório na instrução PATH, e lá você vai.
Aqui está a ligação: