使用.bat文件运行php脚本

使用.bat文件运行php脚本,php,windows,batch-file,Php,Windows,Batch File,我需要每天午夜在我的服务器上运行一个php脚本。在linux系统上,我设置了一个cron作业,但我一直使用windows系统 我知道我必须使用windows任务调度器设置一个任务,并且该任务需要运行一个.bat文件,该文件将运行php文件,但我一直在尝试编写.bat文件 我目前拥有的是: @echo off REM this command runs the nightly cron job start "C:\Program Files (x86)\PHP\v5.3\php.exe" -f C

我需要每天午夜在我的服务器上运行一个php脚本。在linux系统上,我设置了一个cron作业,但我一直使用windows系统

我知道我必须使用windows任务调度器设置一个任务,并且该任务需要运行一个.bat文件,该文件将运行php文件,但我一直在尝试编写.bat文件

我目前拥有的是:

@echo off
REM this command runs the nightly cron job
start "C:\Program Files (x86)\PHP\v5.3\php.exe" -f C:\inetpub\wwwroot\sitename\crons\reminder-email.php
但是当我试图手动运行.bat文件来测试它时,我会收到一个windows警报,上面说

Windows找不到“-f”。请确保键入的名称正确,然后重试


我遗漏了什么?

命令有选择地接受已创建窗口的标题作为其第一个参数;在本例中,它认为
C:\Program Files(x86)\PHP\v5.3\PHP.exe
是要显示的标题,
-f
(第二个参数)是要运行的可执行文件

因此,您可以通过提供占位符标题来解决此问题,例如

start "email reminder task" "C:\Program Files (x86)\PHP\v5.3\php.exe" -f C:\inetpub\wwwroot\sitename\crons\reminder-email.php
或者,您可以完全放弃
START
命令(您没有使用它的任何独特功能),直接运行PHP:

"C:\Program Files (x86)\PHP\v5.3\php.exe" -f C:\inetpub\wwwroot\sitename\crons\reminder-email.php

我能建议换一点零钱吗

echo off
REM This adds the folder containing php.exe to the path
PATH=%PATH%;C:\Program Files (x86)\PHP\v5.3

REM Change Directory to the folder containing your script
CD C:\inetpub\wwwroot\sitename\crons

REM Execute
php reminder-email.php

另外,将Apache、MySQL或PHP放入
程序文件中是个坏主意。不要使用名称中带有空格的windows文件夹。

实际上,您甚至不需要批处理文件。 您可以从任务调度器运行php脚本


只需让任务调度器运行php.exe,并将php文件的位置设置为任务的参数。

遗憾的是,这花了将近10个小时来解决。一些协议,如WinRM和PSEXEC,无论提供的凭据如何,都必须传递登录的用户帐户(这或php会覆盖您键入的任何内容)。无论如何,要获取PSEXEC、WinRM或只是启动连接到远程计算机的批处理文件,您需要将IIS运行方式帐户更改为具有这些资源权限的用户(服务帐户)。我意识到这是一个巨大的安全漏洞,但这是出于设计。PHP是安全的,因此不容易被黑客攻击,您必须通过指定运行方式帐户来覆盖其安全性。这与您的应用程序池帐户不同-尽管您的IIS凭据可以使用您的应用程序池帐户。

像这些家伙一样尝试

cd E:\xampp\htdocs\my-project E: php artisan schedule:run cd E:\xampp\htdocs\my project E: php artisan计划:运行 这个怎么样

set php="C:\Program Files (x86)\PHP\v5.3\php.exe"
%php% -f C:\inetpub\wwwroot\sitename\crons\reminder-email.php

我不知道为什么人们会选择这样做。例如,为什么要将CD添加到cron脚本目录中?为什么要在路径中添加一些内容,而不仅仅是在命令行中指定路径?最后,将内容放入程序文件有什么问题?我已经做了很多年了;只要在曾经需要的东西当然可以正常工作。我使用的是一个预先存在的系统,所以文件结构不在我的掌握之中。只是一个问题,不要等到脚本出现ends@a77icu5:嗯,在问题的上下文中这不是一个问题,而且无论如何,只有在使用
START
(直接调用将等待PHP执行结束)。即使使用
START
,您也可以使用
/WAIT
来匹配直接调用行为。如何让cmd窗口保持打开状态?假设我正在无限期地运行web套接字脚本。工作非常好。答案也非常明显。不确定我为什么不首先尝试此操作!工作非常好。好主意!