我可以打开一个 cmd 窗口并通过输入如下内容来启动尾部:
tail -f C:\Oracle\WebCenter\Sites\11gR1\Sites\11.1.1.6.1\logs\sites.log
这可能是一个愚蠢的问题,但是如何在批处理文件中做到这一点?
这应该很简单,但实际上却行不通——我尝试了几种方法,但都没有成功。有人能告诉我我做错了什么吗?
ECHO OFF
CD C:\Oracle\WebCenter\Sites\11gR1\Sites\11.1.1.6.1\logs\
cmd
tail -f sites.log
我也尝试过:
ECHO OFF
start cmd tail -f C:\Oracle\WebCenter\Sites\11gR1\Sites\11.1.1.6.1\logs\sites.log
(我正在使用 Win7 Ultimate,在 64 位机器上,如果这有任何影响的话)
答案1
我可以打败它。只需创建一个快捷方式并将其放入目标字段中:
cmd.exe /K tail.exe "C:\Oracle\WebCenter\Sites\11gR1\Sites\11.1.1.6.1\logs\sites.log"
它只有一个命令行,因此不需要 BATCH 文件。
如果你确实想要一个脚本文件,那么请执行以下操作:
@echo off
tail.exe "C:\Oracle\WebCenter\Sites\11gR1\Sites\11.1.1.6.1\logs\sites.log"
要不就
@tail.exe "C:\Oracle\WebCenter\Sites\11gR1\Sites\11.1.1.6.1\logs\sites.log"
因为它只有一行。
我猜你遇到的问题是你将批处理文件命名为tail.bat
。然后在其中你只使用了tail C:\Oracle\WebCenter\Sites\11gR1\Sites\11.1.1.6.1\logs\sites.log
。这导致你的脚本引用自身,因为 DOS 将首先查看当前目录。它最终会tail.bat C:\Oracle\WebCenter\Sites\11gR1\Sites\11.1.1.6.1\logs\sites.log
一遍又一遍地调用。
更新
如果您希望窗口保持打开状态,则有几个选项。您可以使用以下pause
命令:
@tail.exe "C:\Oracle\WebCenter\Sites\11gR1\Sites\11.1.1.6.1\logs\sites.log"
@pause
或者,您可以在终端内启动一个新 shell,该 shell 在完成后仍保持打开状态。这将导致父 shell 以及终端本身保持打开状态:
@cmd.exe /K tail.exe "C:\Oracle\WebCenter\Sites\11gR1\Sites\11.1.1.6.1\logs\sites.log"
如果您希望窗口轻松关闭,则该pause
命令很合适。只需按任意键即可关闭。如果您通常希望在运行该命令后运行其他命令,则第二个选项更好。