我正在寻找一个像 Linuxwatch
程序一样工作的 Windows 程序/脚本/命令行功能。
watch
定期调用另一个程序/其他程序并显示结果,这对于每秒刷新输出文件或类似文件非常有用:
watch cat my-output.txt
或者更有力地说:
watch grep "fail" my-output.txt
我已经在 cygwin 的库中寻找过它,但是它似乎不存在。
答案1
watch
在 Cygwin 中可用,在procps-ng
列出的 ⁰ 包中这里(此信息可通过网站上的软件包搜索找到,这里)。我不认为这个包是由默认的 cygwin 设置安装的,但是我通常在新安装时选择它以便可以使用 watch 命令。
软件包中工具的位置通常与 Linux 发行版中的软件包名称相匹配(watch
在 Debian 和 Ubuntu 上,包含该软件包的软件包也是 procps),因此如果 Cygwin 软件包搜索功能失败,Linux 发行版的信息可能会提供线索。在此示例中,不再是确切的命名,尽管搜索 procps 会找到 procps-ng。
--
[0]procps
现已弃用(如前所述这里和这里),原始软件包停止维护,一些发行版将其分叉以应用待处理的补丁。在某些地方它仍被这样称呼procps
,但在其他地方,如 cygwin,则使用了新名称
答案2
编写你自己的。假设文件watch.bat
包含:
@ECHO OFF
:loop
cls
%*
timeout /t 5 > NUL
goto loop
并通过以下方式调用它,例如:
watch echo test
test
每 5 秒回显一次。
答案3
Powershell 有while
命令。你可以像在 Linux 中一样使用它:
while (1) {your_command; sleep 5}
Linux 版本:
while true; do your_command; sleep5; done
其他的:
while ($true) {netstat -an | findstr 23560; sleep 5; date}
答案4
这是一个 PowerShell 单行代码:
while ($true) { <your command here> | Out-Host; Sleep 5; Clear }