如何从PHP代码执行win cmd?

时间:2016-04-19 10:18:35

标签: php cmd

我在此路径中有x.exe:C:\inetpub\wwwroot\webclient\db\nucleotide我想执行此命令:blastdbcmd -db nr -entry all -outfmt "%g %T"

在Windows命令行中我执行:

cd C:\inetpub\wwwroot\webclient\db\nucleotide
blastdbcmd -db nr -entry all -outfmt "%g %T"

如何从php代码执行此操作。我知道exec($cmd)shell_exec($cmd)会这样做但是,如何在$cmd中输入上述两个语句?

EDIT1: 如何在文本文件中保存命令的输出? 我试着3声明:

chdir("C:\\inetpub\\wwwroot\\webclient\\db\\nucleotide");
$cmd = "blastdbcmd.exe -db nr -entry all -outfmt "%g %T" -out $text_files_path/NewSeq_$OldDatabaseFile$NewDatabaseFile.txt";
exec($cmd);

,,

exec("C:\inetpub\wwwroot\webclient\db\nucleotide\blastdbcmd.exe -db nr -entry all -outfmt "%g %T" -out $text_files_path/NewSeq_$OldDatabaseFile$NewDatabaseFile.txt");

,,

exec("cd C:\inetpub\wwwroot\webclient\db\nucleotide && blastdbcmd.exe -db nr -entry all -outfmt \"%g %T\" -out $text_files_path/NewSeq_$OldDatabaseFile$NewDatabaseFile.txt");

但是,没有生成NewSeq_ $ OldDatabaseFile $ NewDatabaseFile.txt。看来命令没有执行!

我该怎么办?

感谢。

1 个答案:

答案 0 :(得分:0)

三个选项:

您可以在路径前添加.exe:

exec("C:\inetpub\wwwroot\webclient\db\nucleotide\blastdbcmd.exe -db nr -entry all -outfmt \"%g %T\"");
// don't forget to escape the quotes.

如果您的.exe出于某种原因确实要求您从该目录运行它,请在执行之前使用chdir()进行更改。

chdir("C:\inetpub\wwwroot\webclient\db\nucleotide");
exec("blastdbcmd.exe -db nr -entry all -outfmt \"%g %T\"");

或者,您可以切换到目录并在一行中运行命令:

exec("cd C:\inetpub\wwwroot\webclient\db\nucleotide && blastdbcmd.exe -db nr -entry all -outfmt \"%g %T\"");