如何将参数传递到bat文件中的php脚本


How do I pass parameters to a php script in a bat file

我正在尝试添加一个脚本,该脚本跟踪某些统计信息,并每24小时向windows任务调度程序发送一封电子邮件。

我这样做的方法是使用bat文件。

脚本每分钟运行一次,但仅在我添加email=true时发送一封电子邮件。

在过去,我经常通过examplep运行这个程序,URL为:http://localhost/path/here/script.php?email=true

我正试图在windows任务调度程序中做同样的事情,但我不知道如何添加这个参数。

我的bat文件包含:

@ECHO OFF
C:'xampp'php'php.exe -f "C:'xampp'htdocs'path'here'script.php?email=true"

但这似乎并没有奏效。

提前感谢任何能够提供帮助并澄清如何正确完成这项工作的人。

CLI参数的工作方式不同。您可以将其作为运行

C:'xampp'php'php.exe -f "C:'xampp'htdocs'path'here'script.php" -- email=true

注意第一个--,它将php.exe参数从脚本的参数中分离出来。

但这还不够,因为参数现在存储在$argv数组中。所以您可以将其检查为$sendEmail = in_array('email=true', $argv);

或者(您需要更多的选项),您可以使用getopt之类的东西。

如果你需要它在$_GET中,也可以查看这个SO答案。

要将参数从批处理文件传递到php文件,您需要首先将参数添加到script.php

<?php
$argument1 = $argv[1];
$argument2 = $argv[2];
?>

现在在批处理文件中它更简单的

@echo off
path/to/script.php arg1 arg2

您也可以通过浏览器调用args,但代码已被修改这里的代码(只是一个例子)

<?php
$argument1 = $_GET["arg1"];
$argument2 = $_GET["arg2"];
?>
@echo off
start http:///localhost/url/to/script.php?arg1=argument%201&arg2=argument%202
rem "%20" is a blank space