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.

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.


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.


@ 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}


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.


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

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.


5

Ini adalah PowerShell one liner:

do { <your command here> | Out-Host; Sleep 5; Clear } while ($true)

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

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


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.


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



-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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.