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

问题描述 投票:0回答:2

我正在尝试添加一个脚本来跟踪某些统计数据并每 24 小时向我发送电子邮件到 Windows 任务计划程序。

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

该脚本每分钟运行一次,但仅在我添加

email=true
时发送电子邮件。

过去,我曾经通过 xampp 运行它,网址为:

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"

但这似乎并不能解决问题。

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

php windows batch-file localhost
2个回答
7
投票

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
也请查看这个SOanswer


0
投票

要将参数从批处理文件传递到 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 file:///path/to/script.php?arg1=argument%201&arg2=argument%202
rem "%20" is a blank space
© www.soinside.com 2019 - 2024. All rights reserved.