Apakah analog Windows dari perintah arloji Linux?

49

Saya mencari fungsi program / skrip / perintah baris Windows yang berfungsi seperti Linux watch program.

watch secara berkala panggil program lain / apa pun dan tampilkan hasilnya, yang bagus untuk menyegarkan file keluaran atau serupa setiap detik:

watch cat my-output.txt

atau, lebih kuat:

watch grep "fail" my-output.txt

Saya sudah mencarinya di perpustakaan cygwin, tetapi sepertinya tidak ada.

PeterJCLaw
sumber

Jawaban:

12

watch tersedia di Cygwin, di procps paket seperti yang tercantum sini (info ini dapat ditemukan melalui pencarian paket di situs web, sini ). Saya tidak berpikir paket ini diinstal oleh pengaturan cygwin default, tetapi ini adalah paket yang biasanya saya pilih pada instalasi baru agar perintah jam tangan tersedia.

Lokasi alat dalam paket biasanya cocok dengan nama paket dalam distribusi Linux (paket berisi watch adalah procps di Debian dan Ubuntu juga) jadi jika fungsi pencarian paket Cygwin gagal Anda, info untuk / dari distribusi Linux dapat menawarkan petunjuk.

David Spillett
sumber
33

Tulis milikmu sendiri. Katakanlah file watch.bat mengandung :

@ECHO OFF
:loop
  cls
  %*
  timeout /t 5 > NUL
goto loop

dan menyebutnya melalui, misalnya:

watch echo test

akan bergema test setiap 5 detik.

harrymc
sumber
@ Kerilaron: Perhatikan bahwa hasil edit Anda buruk dan saya harus memperbaikinya. Harap lebih berhati-hati.
Scott
23

Powershell memiliki perintah "sementara". Anda dapat menggunakannya seperti di Linux:

while (1) {your_command; tidur 5}

Versi Linux:

sementara benar; lakukan perintah_Anda; tidur5; selesai

Lainnya:

while ($ true) {netstat -an | findstr 23560; tidur 5; tanggal}

Mikis
sumber
3
Anda bisa menggunakannya while (1), karena 1 adalah kebenaran.
TheQuickBrownFox
Saya juga menemukan bahwa Anda dapat menggunakan "clear" sebagai pernyataan terakhir, sehingga berperilaku lebih seperti menonton.
itmuckel
10

Perintah Windows generik satu liner untuk mencapai hal ini:

for /l %g in () do @( echo test & timeout /t 2 )

Ganti "echo test" dengan perintah yang ingin Anda jalankan berulang kali.

w1mb0r
sumber
bagus, sederhana satu liner yang melakukan trik
user230910
5

Saya menulis modul PowerShell kecil ini untuk melakukan apa yang Anda cari. Masukkan saja

C:\Users\[username]\Documents\WindowsPowerShell\Modules\Watch

dan lari import-module watch di PowerShell.


# ---- BEGIN SCRIPT
# Author:       John Rizzo
# Created:      06/12/2014
# Last Updated: 06/12/2014
# Website:      http://www.johnrizzo.net

function Watch {
    [CmdletBinding(SupportsShouldProcess=$True,ConfirmImpact='High')]
    param (
        [Parameter(Mandatory=$False,
                   ValueFromPipeline=$True,
                   ValueFromPipelineByPropertyName=$True)]
        [int]$interval = 10,

        [Parameter(Mandatory=$True,
                   ValueFromPipeline=$True,
                   ValueFromPipelineByPropertyName=$True)]
        [string]$command
    )
    process {
        $cmd = [scriptblock]::Create($command);
        While($True) {
            cls;
            Write-Host "Command: " $command;
            $cmd.Invoke();
            sleep $interval;
        }
    }
}

Export-ModuleMember -function Watch

# --- END SCRIPT
johnrizzo1
sumber
5

Inilah yang akan saya lakukan di PowerShell:

while(1){ netstat -an|grep 1920;start-sleep -seconds 2;clear }

Kondisi while(1) setara dengan while true, berulang tanpa batas.

klaypigeon
sumber
5

Ini adalah PowerShell one liner:

do { <your command here> | Out-Host; Sleep 5; Clear } while ($true)
ErikW
sumber
Saya akan menempatkan Clear pertama.
sastanin
3

Anda juga dapat membuat penundaan menggunakan perintah PING, misalnya:

@echo off
:loop
  cls
  dir c:\temp
  REM 5000mS (5 sec) delay...
  ping 1.1.1.1 -n 1 -w 5000 >NUL
goto loop
Linker3000
sumber
2

Saya memiliki masalah yang sama ketika perlu memeriksa ukuran file dari suatu file yang sedang dikerjakan secara aktif oleh proses lain. Saya akhirnya mengkloning fungsi jam tangan di Windows. Exe yang dikompilasi serta sumber tersedia di situs.

perhatikan Windows

garrettg84
sumber
1

Saya membuat perintah arloji untuk windows yang disebut llwatch.

Kode keduanya ada di situs web saya landenlabs.com

dan juga pada GitHub

Anda mungkin perlu menggunakan x64 untuk menonton program x64 dan x32 untuk yang lain. Tidak yakin seberapa pilih-pilih jendela.

LanDenLabs
sumber
Tidak yakin mengapa ini dibatalkan ... Selamat datang di Pengguna Super !
jpaugh
1

apa yang dikatakan @harrymc kecuali dengan tidur watch.bat

@ECHO OFF
:loop
  %*
  sleep 5
goto loop

./watch.bat menjalankan uji coba npm

npm run test setiap 5 detik

user2167582
sumber
-1

Saya sedang terburu-buru .... Saya menggunakan satu saran dan sedikit mengubahnya untuk bekerja untuk saya:

untuk / l% g di () do @ (tes gema & batas waktu / t 2)

Saya mengubahnya menjadi:

untuk / l% g di () do @ (test.bat & amp; timeout / t 2)

Dan saya membuat file test.bat dengan baris perintah. Dalam kasus saya, itu adalah:

grup / domain bersih

Saya menemukan bahwa perintah gema baru saja dicetak ke layar tetapi tidak menjalankan perintah

aguilae
sumber