我有一个程序可以从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;;
显然没有像我预期的那样工作。
答案 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'用于分隔参数)