繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM