从php返回值到批处理文件

从php返回值到批处理文件,php,batch-file,batch-processing,Php,Batch File,Batch Processing,我有一个调用php脚本的批处理文件。php脚本返回一个我想在批处理脚本中使用的值。php脚本回显正确的返回值,但是我无法找到一种方法来捕获要在批处理文件中使用的值 我在for循环上尝试了许多变体,但都没有成功。我的批处理脚本如下所示: @echo off Setlocal "C:\Program Files (x86)\PHP\v5.3\php.exe" -f C:\inetpub\wwwroot\hello.php endlocal 当然,这只是返回“Hello”。我如何在批处理文件中设

我有一个调用php脚本的批处理文件。php脚本返回一个我想在批处理脚本中使用的值。php脚本回显正确的返回值,但是我无法找到一种方法来捕获要在批处理文件中使用的值

我在for循环上尝试了许多变体,但都没有成功。我的批处理脚本如下所示:

@echo off
Setlocal

"C:\Program Files (x86)\PHP\v5.3\php.exe" -f C:\inetpub\wwwroot\hello.php

endlocal
当然,这只是返回“Hello”。我如何在批处理文件中设置一个变量(例如一个名为retVar的变量)来包含这个php调用返回的内容

谢谢,, 西蒙

使用
for/f
执行命令(在
in
子句中),并对命令输出中的每一行执行一个代码块(在
do
子句中)。对于每一行,变量/可替换参数(示例代码中的
%%a
)将保留该行。在这种情况下,由于php命令的输出只有一行,因此只执行一次,将php输出行存储到
retVar
变量中


默认情况下,
for/f
将尝试标记它读取的行,使用空格和分隔符在字段中拆分。为了避免这种行为,使用了一个空的分隔符列表,因此所有行内容都将存储在
%%a

您是否尝试过
“php-f script.php | set bla=
?如果打印为标准输出使用。
对于/f%a in('time/t')是否执行echo%a
打印或返回?
echo 33
退出(33)不同
@echo off
    setlocal enableextensions
    for /f "delims=" %%a in (
       '"C:\Program Files (x86)\PHP\v5.3\php.exe" -f C:\inetpub\wwwroot\hello.php'
    ) do set "retVar=%%a"

    echo %retVar%