运行多个dos命令和更改驱动器号 - 所有通过php exec()

时间:2012-08-23 13:17:41

标签: php cmd dos

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

我正在尝试做的例子

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

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

2 个答案:

答案 0 :(得分:1)

我认为您需要执行此操作的原因是因为p4应用程序需要使用它所在目录的工作目录来启动 - 在这种情况下,执行此操作的方法是更改在调用exec()

之前,PHP脚本的工作目录(chdir()
// 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)附加到您正在执行的文件的名称,以使其正常工作。

答案 1 :(得分:0)

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

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

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