2017-10-15 90 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将理解的有效字符串。 –