我正在尝试通过php exec()运行一些命令,并且遇到了很多麻烦。 #1,我无法更改命令需要运行的驱动器号。 #2,我无法运行多个命令 - 只运行第一个命令。
我正在尝试做的例子
"cmd.exe /c \"cd E:\files; p4 -P -u user1 -c client1 sync ...\""
这让我绝对疯狂,我已经尝试了一切,无法改变驱动器号。即使不更改驱动器号,也只会运行第一个命令。任何帮助表示赞赏。
答案 0 :(得分:1)
我认为您需要执行此操作的原因是因为p4
应用程序需要使用它所在目录的工作目录来启动 - 在这种情况下,执行此操作的方法是更改在调用exec()
:
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 ...\""