2017-10-15 157 views
0

我使用下面的代碼從Delphi通過這三個參數的批處理文件:參數傳遞到PHP

CommandLine := Format('cmd.exe /c "d:\run.bat %s"', [Email, StartDate, EndDate]); 

run.bat文件本身包含:

@echo off 
cls 
D: 
cd \test 
"C:\PHP\php.exe" index.php %3 

我所試圖做的是從德爾福調用一個bat文件,並通過三個參數。 bat文件本身執行一個php文件,我需要傳遞這三個參數並通過訪問它們。使用此代碼我無法做到這一點。你能幫我指出我做錯了什麼嗎?

+0

我只看到一個%,在你的formatString的? – fvu

+0

@fvu我不確定這個%s是否真的有用 –

+0

您還會如何將這些參數傳遞給批處理文件?更重要的是,你只有通過第三個參數到PHP文件,這是至少可疑 – fvu

回答

1

如果你想繞過三個參數,他們都應該出現在生產和消費方面都像這樣:

CommandLine := Format('cmd.exe /c "d:\run.bat %s %s %s"', [Email, StartDate, EndDate]); 

(假設起始日期和結束日期是字符串,如果需要做出相應的調整)並在批處理文件中

@echo off 
cls 
D: 
cd \test 
"C:\PHP\php.exe" index.php %1 %2 %3 

其中%1表示「第一個命令行參數」,%2表示「第二個」,依此類推。

+0

謝謝!我現在得到的格式無效或與參數不兼容.. –

+0

我有點期待,這就是爲什麼我說'假設StartDate和EndDate是字符串,根據需要進行相應的調整。如果他們是TDateTimes,請查看FormatDateTime – fvu

+0

@ZenAM什麼類型的'StartDate'和'EndDate'?如果他們是'TDateTime',你首先需要將它們轉換爲PHP將理解的有效字符串。 –