如何从php命令行程序中将参数传递给可执行文件?

时间:2014-05-02 20:59:24

标签: php windows web scripting exec

我有一个程序可以从windows7的命令行执行,并传入一些参数。程序执行一些计算,然后写入文本文件,然后关闭。没有输出进入命令行。

我需要做的是通过php网页执行此程序 我一直在阅读PHP手册,我似乎仍然无法让程序正常运行。

此代码段执行EXE。显然,我的问题是让EXE看到参数。

<?php 
$du = 'Unity.exe';
echo exec($du);
echo $command;
?>

在这里,我试图传入参数,EXE永远不会运行,参数丢失或者什么。

<?php 
//Date (no year), Time(am | pm), Name, Duration, Experiment type.
//05/05 10:00,.5,User
$du = 'C:\Apache24\old\Unity.exe';
$command = $du . ' 05/06, 1:00 AM, .5, Joh';
echo exec($command);
echo $command;
?>

我不知道该怎么做。 exec($ command,$ return_var);总是以1返回,并且没有文本写入文本文件。

更新:

我应该如何通过php将参数传递给exe? 这一行: $ command = $ du。 &#39; 05 / 06,1:00 AM,.5,Joh&#39;;

显然没有像我预期的那样工作。

2 个答案:

答案 0 :(得分:1)

如果您使用popen()它可能与fopen()类似,但您可以使用命令行程序。因此,您可以使用fread()fgets()来阅读输出。

你得到的是退出代码或主函数的返回值,你可以从c / c ++中知道。在Linux中,如果我没记错的话,你可以用echo $#阅读它,在Windows中它是echo %errorlevel%

答案 1 :(得分:1)

这是我运行的测试列表

  

test.php的

<?php
echo exec('echo "abc "');
echo "<br>";
echo exec('copy "test.php" "test2.php"');
echo "<br>";
echo exec('test.bat "hello this is a test"');
echo "<br>";
echo exec('test2.bat hello this is a test');
?>

<强> test.bat的

echo %1

<强> test2.bat

@echo off
echo %1 - %2 - %3 - %4 - %5

输出

"abc "
1 file(s) copied.
"hello this is a test"
hello - this - is - a - test

所以,尝试在与php文件相同的文件夹中使用bat文件来绕过参数, 喜欢,

<强> test.php的

echo exec('test.bat 05/06 1:00 AM .5 Joh');

<强> test.bat的

Unity.exe %1 %2 %3 %4

(请注意,在大多数情况下,'space'用于分隔参数)