我如何强制计划的 .bat 作业在前台运行?

我如何强制计划的 .bat 作业在前台运行?

我有一个简单的.bat,它每天同一时间运行一个 PHP 脚本。

@echo ON
php C:\path\to\script.php argument
pause

双击 .bat 文件时,它运行正常。我设置了计划任务每​​天运行它,但它在后台运行。任何地方都没有命令行窗口。我可以看到它确实在运行。

我真的很希望能够在这项工作运行时对其进行监控。

我如何强制它在前台命令行窗口中运行?

Windows 7 环境。

答案1

当您安排任务时,如果您将其设置为以当时登录的用户身份运行,则它应该在前台运行。常规选项卡下还有一个“隐藏”复选框。确保未选中该复选框。

答案2

我实际上在 StackOverflow 上找到了这个答案。

在“计划任务”属性的“操作”选项卡下,选择您的操作并单击“编辑”。

在程序/脚本字段下,将其更改为 cmd。

在添加参数字段下,将其更改为“/k“C:\path\to\job.bat”。

这对我有用。

答案3

schtasks 命令在处理用户和后台/前台方面相当特别。我更喜欢从命令行创建和管理计划任务(比 GUI 麻烦少得多,而且我可以通过这种方式快速调整到我喜欢的程度),但前台/后台是一个具体问题。通过示例展示其工作原理:

以下任务将每 30 分钟运行一次(但仅在后台运行!使用 /ru 和 /rp 强制执行此操作):

schtasks /create /sc 分钟 /mo 30 /tn “注释” /tr notepad.exe /ru /rp

但是,如果你运行以下命令,它将使用你的凭据在前台运行(因此,如果你想监视该作业,你将要可以按如下方式执行此操作):

schtasks /create /sc 分钟 /mo 30 /tn "注释" /tr notepad.exe

我第一次看到它时觉得很奇怪,但一旦你知道规则,它就很简单了。正如你所说,奇怪的是,在 GUI 中,你必须将用户名/密码设置为当前用户才能在前台工作,这似乎恰恰相反。

更多示例:

schtasks /create /sc 分钟 /mo 30 /tn "注释" /tr "php C:\path\to\script.php 参数"

schtasks /create /sc 分钟 /mo 30 /tn “注释” /tr “启动 /min C:\Users\John\MyPHPscript.bat”

然后放入 MyPHPscript.bat:php C:\path\to\script.php 参数

要正确查看特定任务(也显示所使用的命令行):

schtasks /query /tn "注释" /v /fo 列表

相关内容