0

我正在尝试通过 php exec() 运行一些命令,但遇到了很多麻烦。#1,我无法更改命令需要运行的驱动器号。#2,我不能运行多个命令 - 只有第一个命令运行。

我正在尝试做的示例

"cmd.exe /c \"cd E:\files; p4 -P -u user1 -c client1 sync ...\""

这让我绝对发疯,我已经尝试了所有方法并且无法更改驱动器号。即使不更改驱动器号,也只有我的第一个命令会运行。任何帮助表示赞赏。

4

2 回答 2

1

我认为您需要这样做的原因是因为p4应用程序需要从它所在目录的工作目录启动 - 在这种情况下,这样做的方法是更改​​ PHP 脚本的工作目录 ( chdir())在调用之前exec()

// Get current working directory so we can set it back afterwards
$oldDir = getcwd();

// Change to required dir
chdir('E:\\files');
// Execute external program
exec('p4 -P -u user1 -c client1 sync ..');

// Change back to original working directory
chdir($oldDir);

如果外部程序的工作目录无关紧要,你可以这样做:

exec('E:\\files\\p4 -P -u user1 -c client1 sync ...');

您可能还需要将文件扩展名(例如.exe)附加到您正在执行的文件的名称中以使其工作。

于 2012-08-23T13:32:17.290 回答
0

我可以看到的一个问题是E:\files,需要转义反斜杠。

而且我注意到在 Windows 中您首先更改驱动器号,然后更改目录。因此,如果您必须更改驱动器,请尝试以下操作:

"cmd.exe /c \"E:; cd E:\\files; p4 -P -u user1 -c client1 sync ...\""
于 2012-08-23T13:23:57.463 回答