Unix kuyruk komutunun Windows eşdeğeri [kapalı]


410

Bana yazılırken bir günlük dosyasının çıktısını izlemenize izin verecek Unix 'kuyruk' komutunun eşdeğerini arıyorum.


Bu yardımcı olur mu? http://malektips.com/xp_dos_0001.html http://commandwindows.com/server2003tools.htm İşte doğrudan Microsoft bağlantısı. Makinemde test ettim (sadece meraktan ve ihtiyacım olabileceğinden) ve iyi çalışıyor.
johnny

1
Orada aslında olan XP için kuyruk Microsoft XP standart sürümüyle yüklemek etmediğini sadece var; "Windows Server 2003 Kaynak Seti Araçları" nda paketlediler. Buradan edinebilirsiniz: microsoft.com/downloads/…
Matt Poush 8:09

1
Tam bir dupe değil ama buraya bakınız stackoverflow.com/questions/247234/…
Martin Beckett

mobaXTerm, ücretsiz ve eklentilerin bir günlüğü var, kuyruk -f /drives/c/logs/mylog.log
surfealokesea

3
Windows uygulamamdaki izleme hatalarını ayıklamak için aynı şeye ihtiyacım olduğu için bunun kapalı olması gerektiğini düşünmüyorum. Konu hakkında "programcılar tarafından yaygın olarak kullanılan yazılım araçları" hakkında
kristianp

Yanıtlar:


137

Win32 için GNU Utilities gibi bir şey yüklemenizi öneririm . Kuyruk da dahil olmak üzere çoğu favoriye sahiptir.


5
Sadece tail2GB'lık bir dosyada GNU'ları kullanmaya çalıştım ve boğuldu. moreiyi çalıştı (en azından dosyanın başlangıcını görüntüleme).
Eric

@EricJ., Benim için aynı. 3GB'lık bir dosyada yapabilirim headama yapamıyorum tail... Fikirler?
Alphaaa

@ Alfafa: Bunun GNU Utilities tarafından kullanılan işletim sistemi çağrıları ile ilgili olduğundan şüpheleniyorum. Bkz. Stackoverflow.com/a/4003487/141172
Eric J.

@EricJ., Teşekkürler, bu gerçekten alakalı görünüyor. Ama sadece bir geçici çözüm kullanmamın daha kolay olduğunu fark ettim: Sadece basit bir senaryo yazacağım tail:)
Alphaaa

1
Burada daha iyi bir çözüm olduğuna inanıyorum: stackoverflow.com/questions/4426442/…
Dung

441

PowerShell kullanıyorsanız, bu işe yarar:

Get-Content filenamehere -Wait -Tail 30

Stefan'ın yorumunu aşağıdan gönderiyor, bu yüzden insanlar kaçırmıyor

PowerShell 3, yalnızca son x satırını içeren bir -Tail parametresi sunar


13
Aslında bu dinamik değil
Jey Geethan

16
Bunu bilmek güzel; Teşekkürler. Ama bununla ilgili birkaç problemim vardı (Windows 7'de). (1) tüm dosyayı görüntüler (büyük bir günlük dosyası için iyi değil, bu yüzden tailyararlı olabilir) (2) istediğim kadar dinamik değil (belki kurulumum ve diğer posterler arasındaki OS / dosya sistemi değişiklikleri nedeniyle) ?). Yani, kabuğun Get-Contentbazen dirbaşka bir kabukta çalışana kadar güncellenmediğini belirledim .
mpontillo

10
Sanırım okuma, kopyalama / yapıştırma vb. Şansı vermek için terminal penceresinin içinde bir şey seçerseniz PowerShell'in kaydırma / çıkış işlemini duraklatacağını belirtmek gerekir. Enter tuşuna basarsanız kaydırma işlemine devam eder.
cbednarski

18
PowerShell 3, yalnızca son x satırını dahil etmek için bir -Tail parametresi sunar
Stefan Haberl

8
Peki Powershell için doğru cevap böyle bir şey olmamalı Get-Content -Tail 100 -Wait .\logfile.logmı?
Henno Vermeulen

62

Baretail'i her zaman Windows'ta kuyruk yapmak için kullandım . Ücretsiz ve oldukça güzel.

Düzenleme: Baretail'in daha iyi bir açıklaması için bu soruya bakın


Bu, Windows Server 2003 R2 SP1'de benim için çalışan ilk çözüm oldu! Yükleyici ile süper kolay, kutudan çıktığı gibi kuyruklamak için çalıştı :)
cellepo

İmzasız çalıştırılabilir dosyaları HTTP üzerinden indirmek ve yürütmek muhtemelen iyi bir fikir değildir. En azından HTTPS sitesi üzerinden indirilmelidir .
Zero3

Yazılımın 2006 yılından bu yana yükseltilmemesine rağmen siteyi korumaya ve SSL sertifikasını güncellemeye devam etmelerini şaşırtıcı buluyorum. Tam olarak ihtiyacım olan şey. Windows Defender tehdit bulamıyor.
Lionet Chen


24

Toplu komutlar kullanarak DOS CMD kuyruğuyla ilgilenen herkes (aşağıya bakın).

Kaymakam değildir ve bazen çizgiler tekrar eder.

Kullanım: 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

Bu zekice, ve ben bir araç indirirken mevcut işlevselliği kullanmakla ilgili bir seçenek değil! Bu kod CPU'yu yiyecektir, çünkü -f için sürekli olarak dönecektir.
armstrhb

1
indirme ve cpu yeme ile aynı sorunu vardı! bu satırı daha ping 127.0.0.1 -n 2 > nulönce ekledi goto followloop. iki ping gönderir ve arasında 1 saniye bekler. bu yüzden cpu yaşamaya izin verir
!:

Müthiş! Çok teşekkürler
John Fairbanks

1
Kullanabiliyorsan neden ping kullanıyorsun timeout /t 2?
namezero

23

Oldukça fazla seçenek var, ancak hepsinin daha gelişmiş özelliklere sahip kusurları var.


19

Windows için Tail kullandım . Kesinlikle kullanmak kadar zarif değil

kuyruk
ama sonra Windows kullanıyorsunuz. ;)


Windows için ikinci Kuyruk. Aynı pencerede birden fazla dosyayı açıp izleyebildiğim için beğendim.
Paul

Powershell gc -tail yolu Posh 1 veya Posh 2.x kullanıyorsanız çalışmıyor. Gc -tail işlevselliği Posh 3.0'da eklendi.
user1390375

16

Windows PowerShell ile şunları kullanabilirsiniz:

Get-Content <file> -Wait

15

Buradaki yanıtlar arasında Log Expert'i hiçbir yerde görmedim.

Özelleştirilebilir ve günlük dosyalarını dolaşmak için oldukça iyidir. Şimdiye kadar benim için en iyi Windows grafik günlük görüntüleyicisi.

Ne yazık ki, bu yazılım artık mevcut değil. Bunu archive.org adresinden okuyabilirsiniz .


Log Expert'in özelliklerini seviyorum, ancak deneyimim Win 7 64 bit'de buggy oldu.
Kil

"Net görüş" işlevini özlüyorum.
Daniel Hári

13

Hiçbir şey yüklemek istemiyorsanız, işi standart Windows komutlarından yapan "kendi oluştur" toplu iş dosyanızı oluşturabilirsiniz. İşte nasıl yapılacağına dair bazı işaretçiler.

1) find / c / v "" yourinput.file dosyasını kullanarak giriş dosyanızdaki satır sayısını alın. Çıktı şuna benzer:

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

2) for / f kullanarak 15 sayısını almak için bu çıktıyı ayrıştırın.

3) set / a kullanma , atlanması gereken kafa çizgisi sayısını hesaplayın

4) / f "skip = n" için kullanarak başlık çizgilerini atlayın ve kuyruk çizgilerini tekrarlayın / işleyin.

Zamanı bulursam, böyle bir toplu iş dosyası oluşturur ve buraya gönderirim.

DÜZENLE: 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
Önceki açıklamanın toplu işidir. Geçerli dosyanın son 10 satırını gösterir: / f için "belirteçleri = 3" %% f in ('find / c / v ""% 0') nbLines = %% f ____ set / a nbSkippedLines = / n için% nbLines% -10 ____ skip =% nbSkippedLines% delims = "%% d in (% 0) %% d yankı yapıyor
Nicolas

1
Poster tam olarak bunu istiyor ve gayet iyi çalışıyor.
Jackie Yeh

Kod için teşekkürler! Cevabı düzeltilmiş parametre numarası ve ekstra bir tane ile satır sayısına ekledim. Satırların bir çıkış görüntüleyeceğini unutmayın. Not: 1,5 GB'lık bir dosyayı kuyruklamak için kullandım ve sonuçları sadece 15 saniyede aldım.
Leopoldo Sanczyk

Aslında, # 4 adımında atlamak için satır sayısı ile ilgili bir parametre alır 'daha' komutunu kullanmak daha iyi olurdu düşünüyorum. Daha da hızlı düşünürdüm.
Philibert Perusse

8

Mtail'i son zamanlarda kullandım ve iyi çalışıyor gibi görünüyor. Bu yukarıda belirtilen yalınayak gibi GUI türüdür. resim açıklamasını buraya girin



5

UNIX için Windows Hizmetleri'ni deneyin . Kuyruk yanı sıra kabukları, awk, sed, vb sağlar.

Güncelleme -: Maalesef 2019'dan itibaren bu sistem artık Microsoft Yükleme Merkezi'nde mevcut değil.


1
Bu Win7 ve daha yeni sorunları var.
Doug Wilson

1
Gerçekten mi? Dört yaţýndaki oylarýn altýndan oy kullanýyor musun? Katkıda bulunmanın yolu.
Dave

9
@Dave: Soru eski olmasına rağmen, insanlar hala en iyi cevabı bulmaya çalışıyorlar. Neredeyse 5 yıl öncesinden gelen bir cevap artık alakalı veya iyi değilse, neden cevap vermemelisiniz? Bu sitenin tamamı değerli bilgileri daha hızlı elde etmekle ilgilidir - bugün, 5 yıl önce değil.
Oliver

1
@Hellfire - Wwindows 7 ile çalışmadığı için cevabı düzenliyor olmalısınız. Sadece yorum yapmak aptalca.
Preet Sangha


4

DOS sahip hiçbir kuyruk komutunu; Eğer GNU kuyruk ve diğer GNU araçları için bir Windows ikili indirebilirsiniz burada .



4

DOS'A'ın type* nux en gibi eserleri catolsa tıpkı cat, bu gerçekten doğru değil, bu yüzden tüm dosyayı dökümü yapar tail, ama bir gerçek yüklemeden / indirilmesi olmadan bir tutam mevcut olacak tailyedeği.


4

Bu küçük toplu senaryoyu yazdım. Unix "kuyruğu" kadar sofistike değildir, ancak umarım birisi çıktıyı dosyanın son 10 satırıyla sınırlamak gibi ekleyebilir. Bu komut dosyasını geliştirirseniz, lütfen gönderin bana soyarak ~ [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

"tip" komutunu kullanarak güzel bir fikir, ama bunu yapamazsınız!
eadmaster

Bu sadece metin dosyasını yeniden yüklemeye devam eder.

echo'nun toplu sürümü garip bir davranışa sahiptir, eğer hiçbir argüman verilmezse, sadece komuttan echo.sonra sözcüğün sonunda bir nokta olarak (ve ayrı bir argüman olarak değil) çağırırsanız, yeni bir satır yazdırır.
scragar




3

Gelen Uzak Yöneticisi , basın F3bir dosya üzerinde, sonra standart izleyiciyi girmek içinEnd dosyanın sonuna gitmek için anahtarı.

Dosya güncellenirse, Uzak Yönetici dosyayı otomatik olarak kaydırır.



0

Grafik günlük görüntüleyicileri, günlük dosyalarını görüntülemek için çok iyi olsalar da, komut dosyalarına (veya toplu iş dosyalarına) dahil edilebilecek bir komut satırı yardımcı programı ihtiyacını karşılamazlar. Genellikle böyle basit ve genel amaçlı bir komut, belirli bir ortam için özel bir çözümün parçası olarak kullanılabilir. Grafiksel yöntemler bu tür kullanımlara kolayca borç vermezler.



0

Ben toplu işlerde kuyruk fonksiyonu ihtiyacını karşılayan bir yardımcı program buldum düşünüyorum. Buna "mtee" denir ve ücretsizdir. Üzerinde çalıştığım bir toplu iş dosyasına dahil ettim ve çok güzel bir iş çıkarıyor. Yürütülebilir dosyayı PATH deyimindeki bir dizine koyduğunuzdan emin olun ve gidersiniz.

İşte bağlantı:

MTEE

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.