2014-06-26 84 views
0

我有一個調用php腳本的批處理文件。 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調用返回的內容?

謝謝, 希蒙

+0

您是否試過'「php -f script.php | set bla ='? –

+0

如果打印到標準('time/t')do echo%A' – phd443322

+0

打印或返回?'echo 33'與'exit(33)'不一樣。 –

回答

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