2014-05-02 82 views
1

我有一个程序,我可以从Windows7的命令行执行,并传入一些参数。该程序进行一些计算,并写入文本文件,然后关闭。没有输出进入命令行。如何将参数传递给在Windows命令行程序中执行的PHP?

我需要做的是通过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,并且没有文本被写入文本文件。

UPDATE:

我应该如何通过PHP参数传递给EXE?
此行: $ command = $ du。 '05/06,1:00 AM,.5,Joh';

显然不能按我的预期工作。

+0

不好好看看这个形式给出,你可以找到更好的使用Linux平台的方式;) – Hackerman

+0

我是Linux用户。我的老板不是。如果这取决于我,我会在php中重写这个,并使用数据库从我的Linux服务器运行它。但我们没有这样做,我不能在星期一重写它。所以我需要这个工作。 – j0h

+0

也许我可以让它在Linux下运行,在酒下。我的意思是,这个项目的一切都很荒谬。我不妨全力以赴。 – j0h

回答

1

这是可能的,如果你使用popen()这是一个像fopen()但你使用命令行程序。所以你可以用fread()fgets()读取输出。

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

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文件用于绕过参数, 像蝙蝠文件,

test.php的

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

test.bat的

Unity.exe %1 %2 %3 %4 

(和请注意,在大多数情况下,“空间”用于将分隔参数)

相关问题