[英]How to pass arguments to executeable in windows command line program from php?
我有一个程序,可以从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。 '05/06,1:00 AM,.5,Joh';
显然没有按我预期的那样工作。
如果使用popen()
,则可能类似于fopen()
但可以使用命令行程序。 因此,您可以使用fread()
或fgets()
读取输出。
您得到的1是您可能从c / c ++知道的退出代码或主函数的返回值。 如果我没记错的话,在Linux中可以用echo $#
读取它,而在Windows中则是echo %errorlevel%
。
这是我跑过的测试清单
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
(并且请注意,在大多数情况下,“空格”用于分隔参数)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.