从php返回批处理文件的值

时间:2014-06-26 00:00:07

标签: 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

这当然只返回“你好”。如何在批处理文件(例如名为retVar的变量)中设置变量以包含从此php调用返回的内容?

谢谢你, 希蒙

1 个答案:

答案 0 :(得分:1)

@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%

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

默认情况下,

for /f会尝试对其读取的行进行标记,使用空格分隔字段和分隔符。为避免此行为,使用了一个空的分隔符列表,因此所有行内容都将存储在%%a