以下命令在命令提示符下运行。如何使用命令提示符从php执行此操作。
"C:\Program Files (x86)\DBConvert\SQLite2MySQLSync\SQLite2MySQLSync_Cons.exe"/Session:"session"
我尝试如下,但两种尝试均无效。你能建议正确的格式吗?
1)exec('C:\Program Files (x86)\DBConvert\SQLite2MySQLSync\SQLite2MySQLSync_Cons.exe "'/Session:session'"');
2)system("C:\Program Files (x86)\DBConvert\SQLite2MySQLSync\SQLite2MySQLSync_Cons.exe /Session:session",$status);
答案 0 :(得分:1)
我在尝试从提示符执行命令时发现了许多解决方案,但这取决于您使用的Windows版本。这是我通过php运行命令的方式,我知道在命令提示符下工作。你需要在php5.4 +中启用COM扩展。我发现,最困难的部分是确保你到处都有正确数量的反斜杠。我通常会回显$ runCommand,以便在我对语法不正确感到失望之前测试输出。
// -- Windows command prompt action -- //
$WshShell = new COM("WScript.Shell");
$data='C:\Program Files (x86)\DBConvert\SQLite2MySQLSync\SQLite2MySQLSync_Cons.exe /Session:session';
$runCommand = "c:\\windows\\system32\\cmd.exe /C ".$data;
$output = $WshShell->Run($runCommand, 0, false);
// -- end Windows command prompt action -- //
答案 1 :(得分:0)
你可能想看看我为此专门写的command library。 (对无耻的酒吧感到抱歉)
它协调操作系统差异,并尝试解决一些讨厌的Windows错误。即使在windows下使用exec,它也允许你访问stdout,stdin和stderr。
例如,在您的情况下:
use Tivie\Command\Command;
$cmd = new Command(\Tivie\Command\ESCAPE);
$cmd->setCommand('C:\Program Files (x86)\DBConvert\SQLite2MySQLSync\SQLite2MySQLSync_Cons.exe')
->addArgument(
new Argument('/Session:"session"')
);
$result = $cmd->run();
Command::run()
返回您可以访问的Result object以检索命令的结果。
echo $result->getStdOut(); // The Standard Output of the command
echo $result->getLastLine(); // The last line of the Standard Output
echo $result->getStdIn(); // The passed standard input
echo $result->getStdErr(); // The standard error
echo $result->getExitCode(); // The command's exit code