如何从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(命令,return_var美元);总是返回为1,并且不向文本文件中写入任何文本。

更新:

我应该如何通过php传递参数给exe ?
这条线:$command = $du。05/06, 1:00 AM, 1:05, john ';

如果您使用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:00AM .5 ');

test.bat

Unity.exe %1 %2 %3 %4

(请注意,在大多数情况下,空格是用来分隔参数的)