运行多个dos命令并更改驱动器号-全部通过php-exec()


Running multiple dos commands and changing drive letters - all through php exec()

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

我尝试做的例子

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

这简直把我逼疯了,我什么都试过了,无法更改驱动器号。即使不更改驱动器号,也只能运行我的第一个命令。感谢您的帮助。

我认为您需要这样做的原因是因为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)附加到正在执行的文件的名称中,以使其工作。

我亲眼看到的一个问题是,在E:'files中,反斜杠需要转义。

我注意到在Windows中,您先更改驱动器号,然后再更改目录。所以,如果你必须更换驱动器,试试这个:

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