Un equivalente di Windows del comando coda Unix [chiuso]
Domanda
Sto cercando l'equivalente del comando 'tail' di Unix che mi permetterà di vedere l'output di un file di registro mentre viene scritto.
Soluzione
Suggerirei di installare qualcosa come GNU Utilities per Win32 . Ha la maggior parte dei preferiti, inclusa la coda.
Altri suggerimenti
Se usi PowerShell allora funziona:
Get-Content filenamehere -Wait -Tail 30
Pubblicazione del commento di Stefan dal basso, in modo che la gente non lo perda
PowerShell 3 introduce un parametro -Tail per includere solo le ultime x righe
Ho sempre usato Baretail per seguire la coda di Windows. È gratuito e piuttosto carino.
Modifica: per una migliore descrizione di Baretail vedi questa domanda
Puoi ottenere la coda come parte di Cygwin .
Chiunque sia interessato a una coda CMD DOS usando i comandi batch (vedi sotto).
Non è perfetto, e le linee a volte si ripetono.
Utilizzo: 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
Esistono diverse opzioni, tuttavia tutte presentano difetti con funzionalità più avanzate.
-
Strumenti di Windows Server 2003 fornisce una coda semplice che può essere scaricato con gli strumenti del Resource Kit . È troppo limitato per molti aspetti (blocca il file seguito, manca molte opzioni come --pid), tuttavia lo farà per il compito di base di tracciare un file.
-
GnuWin32 tail è difettoso ( & # 945; & # 946; & # 947; ) - cose come -f semplicemente non funzionano.
-
UnxUtils tail sembra migliore (-f funziona, ma --pid sembra non farlo, - n ma non --lines = n fallisce con -f), ma sembra essere un progetto morto.
-
Cygwin è una grande brutta poltiglia, forse potrebbe semplicemente usare la DLL e pacchetto coreutils - ma presenta ancora problemi come --pid non funziona con i processi nativi win32.
Ho usato Tail For Windows . Certamente non è elegante come usare
tailma poi stai usando Windows. ;)
Non ho visto Log Expert ovunque tra le risposte qui.
È personalizzabile ed è abbastanza buono per andare in giro file di registro. Finora è il miglior visualizzatore di log grafico di Windows per me.
Se non desideri installare nulla, puoi " costruire il tuo " file batch che esegue il lavoro dai comandi standard di Windows. Ecco alcuni suggerimenti su come farlo.
1) Utilizzando trova / c / v " " yourinput.file , ottieni il numero di righe nel tuo file di input. L'output è simile a:
---------- T.TXT: 15
2) Usando per / f , analizza questo output per ottenere il numero 15.
3) Utilizzando set / a , calcola il numero di linee di testa che devono essere saltate
4) Usando per / f " skip = n " salta le linee di testa ed echo / elabora le linee di coda.
Se trovo il tempo, costruirò un tale file batch e lo pubblicherò di nuovo qui.
Con Windows PowerShell puoi usare:
Get-Content <file> -Wait
Ho usato Mtail di recente e sembra funzionare bene. Questo è il tipo di interfaccia grafica come il baretail di cui sopra.
Prova Servizi Windows per UNIX . Fornisce conchiglie, awk, sed, ecc. Nonché coda.
Scarica il comando tail, parte di Strumenti del Resource Kit di Windows Server 2003
da Microsoft stesso.
Preferisco TailMe per la possibilità di guardare contemporaneamente più file di registro in un'unica finestra: http://www.dschensky.de/Software/Staff/tailme_en.htm
DOS non ha nessun comando di coda; puoi scaricare un binario di Windows per GNU tail e altri strumenti GNU qui .
Un'altra opzione sarebbe quella di installare MSYS (che è più leggero di Cygwin).
Il tipo
di DOS funziona come il cat
di * nux, anche se proprio come il cat
, scarica l'intero file, quindi non è proprio un vero tail
, ma sarà disponibile in un pizzico senza scaricare / installare un vero sostituto tail
.
Ho appena scritto questo piccolo script batch. Non è sofisticato come Unix "tail", ma si spera che qualcuno possa aggiungerlo per migliorarlo, come limitare l'output alle ultime 10 righe del file, ecc. Se si migliora questo script, si prega di inviare a me derubare ~ [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
Il comando tail
e molti altri sono disponibile nel Strumenti del Resource Kit di Windows .
Se si desidera utilizzare le porte Win32 di alcune utility Unix (anziché installare Cygwin), si consiglia di utility GNU per Win32 .
Peso più leggero di Cygwin e più portatile.
Installa MKS Toolkit ... In modo da poter eseguire tutti i comandi Unix su Windows.
Il comando è:
tail -f <file-name>
In Far Manager , premi F3 su un file per inserire il visualizzatore standard, quindi il tasto Fine per passare alla fine del file.
Se il file viene aggiornato, Far Manager lo scorrerà automaticamente.
Sto usando Kiwi Log Viewer . È gratuito.
I visualizzatori di log grafici, sebbene possano essere molto utili per visualizzare i file di log, non soddisfano la necessità di un'utilità della riga di comando che può essere incorporata negli script (o nei file batch). Spesso un comando così semplice e generico può essere utilizzato come parte di una soluzione specializzata per un particolare ambiente. I metodi grafici non si prestano facilmente a tale uso.
Penso di aver trovato un'utilità che soddisfa la necessità della funzione tail nei file batch. Si chiama " mtee " ;, ed è gratuito. L'ho incorporato in un file batch su cui sto lavorando e fa molto bene il lavoro. Assicurati di inserire l'eseguibile in una directory nell'istruzione PATH e via.
Ecco il link:
Puoi provare anche WinTail .
& # 1614; & # 1614;