เทียบเท่า Windows ของคำสั่งหาง Unix [ปิด]


410

ฉันกำลังมองหาคำสั่ง 'หาง' ที่เทียบเท่ากับ Unix ที่จะให้ฉันดูเอาต์พุตของไฟล์บันทึกในขณะที่กำลังเขียน


สิ่งนี้ช่วยได้ไหม? http://malektips.com/xp_dos_0001.html http://commandwindows.com/server2003tools.htm นี่คือลิงค์ Microsoft โดยตรง ฉันได้ทดสอบมันในเครื่องของฉัน (เพราะความอยากรู้อยากเห็นและเพราะฉันอาจต้องการมัน) และใช้งานได้ดี
johnny

1
จริงๆแล้วมันมีหางสำหรับ XP เป็นเพียงที่ Microsoft ไม่ได้ติดตั้งกับ XP รุ่นมาตรฐาน พวกเขาบรรจุอยู่ใน 'เครื่องมือชุดทรัพยากร Windows Server 2003' คุณสามารถรับได้ที่นี่: microsoft.com/downloads/?hl=th
Matt Poush

1
ไม่ exaclty a dupe แต่ดูที่นี่stackoverflow.com/questions/247234/…
Martin Beckett

mobaXTerm ฟรีและมีบันทึกของปลั๊กอินคุณสามารถทำ tail -f /drives/c/logs/mylog.log
surfealokesea

3
ฉันไม่คิดว่าสิ่งนี้ควรถูกปิดเนื่องจากฉันต้องการสิ่งเดียวกันนี้ในการดีบักการติดตามในแอปพลิเคชัน windows ของฉัน มันเกี่ยวกับ "เครื่องมือซอฟต์แวร์ที่โปรแกรมเมอร์ใช้กันทั่วไป" ซึ่งอยู่ในหัวข้อ
kristianp

คำตอบ:


137

ผมขอแนะนำให้ติดตั้งบางอย่างเช่นGNU สาธารณูปโภคสำหรับ Win32 มันมีรายการโปรดมากที่สุดรวมถึงหาง


5
ฉันแค่พยายามใช้ GNU tailกับไฟล์ 2GB และมันสำลัก moreทำงานได้ดี (อย่างน้อยก็ดูจุดเริ่มต้นของไฟล์)
Eric J.

@EricJ. เหมือนกันสำหรับฉัน ในไฟล์ 3GB ที่ฉันสามารถทำได้headแต่ไม่tail... ความคิด?
Alphaaa

@Alphaaa: ฉันสงสัยว่ามันเกี่ยวข้องกับการเรียก OS ที่ GNU Utilities ใช้ ดูstackoverflow.com/a/4003487/141172
Eric J.

@EricJ. ขอบคุณดูเหมือนว่าจะเกี่ยวข้องกัน แต่ฉันรู้ว่ามันเป็นเรื่องง่ายสำหรับผมที่จะใช้วิธีแก้ปัญหา: ฉันแค่จะเขียนสคริปต์ง่ายที่ไม่ได้tail:)
Alphaaa

1
ฉันเชื่อว่านี่เป็นทางออกที่ดีกว่า: stackoverflow.com/questions/4426442/…
Dung

441

หากคุณใช้ PowerShell นี่จะใช้งานได้:

Get-Content filenamehere -Wait -Tail 30

การโพสต์ความคิดเห็นของ Stefan จากด้านล่างดังนั้นผู้คนจึงไม่ควรพลาด

PowerShell 3 แนะนำพารามิเตอร์ -Tail เพื่อรวมเฉพาะบรรทัด x สุดท้าย


13
ที่จริงนี่ไม่ใช่แบบไดนามิก
Jey Geethan

16
นี่เป็นเรื่องดีที่ควรรู้ ขอบคุณ แต่ฉันมีปัญหาสองสามอย่างกับมัน (บน Windows 7) (1) แสดงไฟล์ทั้งหมด (ไม่ดีสำหรับไฟล์บันทึกขนาดใหญ่ซึ่งเป็นเหตุผลว่าทำไมจึงtailมีประโยชน์) (2) มันไม่เป็นไดนามิกตามที่ฉันต้องการ (อาจเป็นเพราะระบบปฏิบัติการ / ระบบไฟล์เปลี่ยนแปลงระหว่างการตั้งค่าและโปสเตอร์อื่น ๆ ?) นั่นคือฉันพบว่าGet-Contentบางครั้งเชลล์ที่ทำไม่ได้อัปเดตจนกว่าฉันจะทำงานdirในเชลล์อื่น
mpontillo

10
ฉันคิดว่ามันคุ้มค่าที่จะกล่าวถึงว่า PowerShell จะหยุดการเลื่อน / ouput ชั่วคราวหากคุณเลือกบางอย่างภายในหน้าต่างเทอร์มินัลเพื่อให้คุณมีโอกาสได้อ่านคัดลอก / วาง ฯลฯ หากคุณกด Enter จะเป็นการเลื่อนต่อ
cbednarski

18
PowerShell 3 แนะนำพารามิเตอร์ -Tail เพื่อรวมเฉพาะบรรทัด x สุดท้าย
Stefan Haberl

8
ดังนั้นไม่ควรจะเป็นคำตอบที่ถูกต้องสำหรับ Powershell เป็นสิ่งที่ชอบGet-Content -Tail 100 -Wait .\logfile.log?
Henno Vermeulen

62

ฉันใช้Baretailสำหรับการปรับใน Windows เสมอ ฟรีและสวยดี

แก้ไข: สำหรับคำอธิบายที่ดีขึ้นของ Baretail ดูคำถามนี้


นี่เป็นโซลูชั่นที่ 1 ที่ทำงานกับฉันใน [gulp] Windows Server 2003 R2 SP1! ง่ายสุด ๆ ด้วยตัวติดตั้งใช้งานสำหรับการตัดอย่างถูกต้องทันใด :)
cellepo

การดาวน์โหลดและการใช้งานโปรแกรมที่ไม่ได้ลงนามผ่าน HTTP อาจไม่ใช่ความคิดที่ดี อย่างน้อยที่สุดหนึ่งควรดาวน์โหลดผ่านเว็บไซต์ของพวกเขา HTTPS
Zero3

ฉันพบว่ามันน่าทึ่งมากที่พวกเขาดูแลเว็บไซต์และอัปเดตใบรับรอง SSL ให้ทันสมัยอยู่เสมอในขณะที่ซอฟต์แวร์ไม่ได้อัปเกรดมาตั้งแต่ปี 2549 แต่ก็ใช้งานได้ดี สิ่งที่ฉันต้องการ 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

นี่เป็นสิ่งที่ฉลาดและฉันทุกคนกำลังใช้ประโยชน์จากฟังก์ชั่นที่มีอยู่เมื่อดาวน์โหลดเครื่องมือไม่ใช่ตัวเลือก! รหัสนี้จะกิน CPU แม้ว่าจะหมุนอย่างต่อเนื่องในการติดตามสำหรับ -f
armstrhb

1
มีปัญหาเดียวกันกับการดาวน์โหลดและการกินซีพียู! เพิ่มบรรทัดนี้ก่อนping 127.0.0.1 -n 2 > nul goto followloopมันส่งสองปิงและรอ 1 ในวินาทีระหว่าง ดังนั้นมันจะปล่อยให้ซีพียูมีชีวิตอยู่!: D
Mohsen ZareZardeyni

! น่ากลัว ขอบคุณมาก
John Fairbanks

1
ทำไมจ้าง ping ถ้าคุณสามารถใช้timeout /t 2?
namezero

23

มีตัวเลือกค่อนข้างมาก แต่ทั้งหมดมีข้อบกพร่องที่มีคุณสมบัติขั้นสูง

  • GnuWin32 หางเป็นรถ ( อัลฟ่า บีตา แกมมา ) - สิ่งที่ต้องการ -f เพียงธรรมดาจะไม่ได้ทำงาน

  • UnxUtils tailดูดีขึ้น (-f ทำงานได้ แต่ --pid ไม่ได้ -n แต่ไม่ใช่ - lines = n ล้มเหลวด้วย -f) แต่ดูเหมือนจะเป็นโปรเจ็กต์ที่ตายแล้ว

  • Cygwinเป็นข้าวต้มน่าเกลียดขนาดใหญ่อาจจะแค่ใช้ DLL และแพ็คเกจ coreutils - แต่ก็ยังมีปัญหาเช่น --pid ไม่ทำงานกับกระบวนการ win32 ดั้งเดิม


19

ฉันเคยใช้ หางสำหรับ Windows แน่นอนว่าไม่หรูหราเท่าการใช้งาน

หาง
แต่คุณใช้ Windows ;)


ฉันสองหางสำหรับ Windows ฉันชอบเพราะฉันสามารถเปิดและตรวจสอบไฟล์หลายไฟล์ในหน้าต่างเดียวกัน
พอล

วิธี powershell gc-tail ไม่ทำงานหากคุณใช้ Posh 1 หรือ Posh 2.x มีการเพิ่มฟังก์ชัน gc -tail ใน Posh 3.0
user1390375


15

ฉันไม่ได้เห็นผู้เชี่ยวชาญด้านบันทึกข้อมูลทุกคำตอบที่นี่

มันปรับแต่งได้และค่อนข้างดีสำหรับการบันทึกไฟล์ จนถึงตอนนี้มันเป็นโปรแกรมดูบันทึกกราฟิก Windows ที่ดีที่สุดสำหรับฉัน

น่าเสียดายที่ซอฟต์แวร์นี้ไม่สามารถใช้งานได้อีกต่อไป คุณสามารถอ่านเกี่ยวกับเรื่องarchive.org


ฉันชอบคุณสมบัติของ Log Expert แต่ประสบการณ์ของฉันได้รับความนิยมใน Win 7 64 bit
นวล

ฉันคิดถึงฟังก์ชัน "มุมมองที่ชัดเจน"
Daniel Hári

13

หากคุณไม่ต้องการติดตั้งอะไรเลยคุณสามารถ "สร้างไฟล์แบทช์ของคุณเอง" ซึ่งทำงานจากคำสั่ง Windows มาตรฐาน ต่อไปนี้เป็นตัวชี้วิธีดำเนินการ

1) ใช้yourinput.file ของ find / c / v ""รับจำนวนบรรทัดในไฟล์อินพุตของคุณ ผลลัพธ์เป็นดังนี้:

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

2) ใช้สำหรับ / fแยกวิเคราะห์เอาต์พุตนี้เพื่อรับหมายเลข 15

3) ใช้set / aคำนวณจำนวนบรรทัดหัวเรื่องที่ต้องข้าม

4) ใช้สำหรับ / f "skip = n"ข้ามส่วนหัวและ echo / ประมวลผลส่วนท้าย

ถ้าฉันหาเวลาฉันจะสร้างไฟล์แบตช์ดังกล่าวและโพสต์กลับมาที่นี่

แก้ไข: 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 บรรทัดสุดท้ายของไฟล์ปัจจุบัน: ____ สำหรับ / f "โทเค็น = 3" %% f ใน ('find / c / v ""% 0') ตั้งค่า nbLines = %% f ____ set / a nbSkippedLines = % nbLines% -10 ____ สำหรับ / f "skip =% nbSkippedLines% delims =" %% d ใน (% 0) ทำเสียงก้อง %% d
นิโคลัส

1
นี่คือสิ่งที่ผู้โพสต์ต้องการและทำงานได้ดี
Jackie Yeh

ขอบคุณสำหรับรหัส! ฉันเพิ่มเข้าไปในคำตอบด้วยหมายเลขพารามิเตอร์ที่ถูกต้องและเพิ่มอีกหนึ่งบรรทัดในจำนวนบรรทัด หมายเหตุมันจะแสดงเส้นทางออก PS: ฉันใช้มันเพื่อตัดไฟล์ 1.5Gb และได้ผลลัพธ์ในเวลาเพียง 15 วินาที
Leopoldo Sanczyk

ที่จริงแล้วในขั้นตอนที่ 4 มันจะดีกว่าถ้าฉันคิดว่าใช้คำสั่ง 'มากกว่า' ซึ่งใช้พารามิเตอร์เป็นจำนวนบรรทัดที่จะข้าม ฉันก็จะคิดเร็วขึ้น
Philibert Perusse

8

ฉันใช้Mtailเมื่อเร็ว ๆ นี้และดูเหมือนว่าจะทำงานได้ดี นี่คือประเภท GUI เช่น baretail ที่กล่าวถึงข้างต้น ป้อนคำอธิบายรูปภาพที่นี่


5

ดาวน์โหลดคำสั่งหางเป็นส่วนหนึ่งของWindows Server 2003 Resource Kit Toolsจากไมโครซอฟท์เอง


1
คุณไม่แปลกหรือเปล่าที่ลิงค์ดูเหมือนจะชี้ไปที่ Microsoft แต่ไม่ใช่หรือ :)
Tomalak


5

ลองWindows Services สำหรับ UNIX ให้เปลือกหอย, awk, sed, ฯลฯ รวมทั้งหาง

อัปเดต -: น่าเสียดายที่ในปี 2019 ระบบนี้ไม่สามารถใช้งานได้ใน Microsoft Download Center


1
เรื่องนี้มีปัญหากับ Win7 และใหม่กว่า
Doug Wilson

1
จริงๆ? คุณกำลังวิ่งไปหาคำตอบอายุสี่ขวบหรือไม่? วิธีการมีส่วนร่วม
เดฟ

9
@Dave: แม้ว่าคำถามจะเก่า แต่ผู้คนยังคงมองหามันเพื่อพยายามหาคำตอบที่ดีที่สุด หากคำตอบจากเมื่อเกือบ 5 ปีที่แล้วไม่เกี่ยวข้องหรือดีอีกต่อไปแล้วทำไมจึงไม่ควรลงคะแนนเลย เว็บไซต์ทั้งหมดนี้เกี่ยวกับการรับข้อมูลที่มีค่าเร็วขึ้น - วันนี้ไม่ใช่ 5 ปีที่แล้ว
Oliver

1
@Hellfire - คุณควรแก้ไขคำตอบด้วยเงื่อนไขที่ใช้ไม่ได้กับ Wwindows 7 มันโง่มากที่จะแสดงความคิดเห็น
Preet Sangha


4

DOS มีคำสั่งไม่มีหาง; คุณสามารถดาวน์โหลดไบนารี Windows สำหรับ GNU หางและเครื่องมือ GNU อื่น ๆที่นี่



4

typeงานของ DOS เช่น * nux catแต่ก็เหมือนcatกันมันทำการถ่ายโอนไฟล์ทั้งหมดดังนั้นมันจึงไม่ใช่ของจริงtailแต่มันจะมีวางจำหน่ายในไม่tailกี่ชั่วโมงโดยไม่ต้องดาวน์โหลด / ติดตั้งตัวแทนที่แท้จริง


4

ฉันเพิ่งเขียนสคริปต์ชุดเล็ก ๆ นี้ มันไม่ซับซ้อนเท่า Unix "tail" แต่หวังว่าจะมีใครบางคนสามารถเพิ่มมันเพื่อปรับปรุงเช่น จำกัด การส่งออกไปยัง 10 บรรทัดสุดท้ายของไฟล์ ฯลฯ หากคุณปรับปรุงสคริปต์นี้โปรดส่งมัน ถึงฉันที่ robbing ~ [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.กับจุดต่อท้ายคำ (และไม่เป็นอาร์กิวเมนต์แยก) มันจะพิมพ์บรรทัดใหม่เดียว
scragar

4

tailคำสั่งและอื่น ๆ อีกมากมายที่มีอยู่ในเครื่องมือของ Windows ทรัพยากร Kitแพคเกจ


ฉันพยายามใช้คำสั่ง tail นี้และสำหรับ tail -n ดูเหมือนว่าจะพิมพ์ n + 1 บรรทัดสุดท้ายจริง ๆ
ajs410




3

ในFar ManagerกดF3ไฟล์เพื่อเข้าสู่วิวเวอร์มาตรฐานจากนั้นEndปุ่มเพื่อนำทางไปยังจุดสิ้นสุดไฟล์

หากมีการอัปเดตไฟล์ Far Manager จะเลื่อนไฟล์โดยอัตโนมัติ



0

โปรแกรมดูไฟล์บันทึกแบบกราฟิกในขณะที่ไฟล์เหล่านั้นอาจใช้งานได้ดีในการดูไฟล์บันทึก แต่ไม่ตรงกับความต้องการอรรถประโยชน์บรรทัดคำสั่งที่สามารถรวมเข้ากับสคริปต์ (หรือไฟล์แบตช์) บ่อยครั้งที่คำสั่งที่เรียบง่ายและมีจุดประสงค์ทั่วไปสามารถใช้เป็นส่วนหนึ่งของโซลูชันเฉพาะสำหรับสภาพแวดล้อมเฉพาะ วิธีการแบบกราฟิกจะไม่ทำให้พวกเขาใช้งานได้อย่างง่ายดาย



0

ฉันคิดว่าฉันได้พบโปรแกรมอรรถประโยชน์ที่ตรงกับความต้องการของฟังก์ชั่น tail ในไฟล์แบทช์ มันชื่อว่า "mtee" และฟรี ฉันรวมมันไว้ในไฟล์แบทช์ที่ฉันทำงานอยู่และมันทำงานได้ดีมาก เพียงตรวจสอบให้แน่ใจว่าใส่ไฟล์ปฏิบัติการลงในไดเรกทอรีในคำสั่ง PATH แล้วออกไปเลย

นี่คือลิงค์:

mtee

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.