我有一个简单的.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 列表