Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行多个dos命令并更改驱动器号-全部通过php exec()_Php_Cmd_Dos - Fatal编程技术网

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

运行多个dos命令并更改驱动器号-全部通过php exec(),php,cmd,dos,Php,Cmd,Dos,我试图通过php exec()运行一些命令,但遇到了很多麻烦#1,我无法更改运行命令所需的驱动器号#2、我不能运行多个命令-只能运行第一个命令 我正在尝试做的例子 "cmd.exe /c \"cd E:\files; p4 -P -u user1 -c client1 sync ...\"" 这简直快把我逼疯了,我什么都试过了,无法更改驱动器号。即使不更改驱动器号,也只会运行我的第一个命令。非常感谢您的帮助。我现在看到的一个问题是E:\files,反斜杠需要转义 我注意到在Windows中,您

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

我正在尝试做的例子

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

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

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

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

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

我假设您需要这样做的原因是,
p4
应用程序需要使用其所在目录的工作目录启动-在这种情况下,这样做的方法是在调用
exec()
之前更改PHP脚本()的工作目录:

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

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

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

谢谢,这是有效的。问题的一部分是我命令的长度。我必须将较长的命令写入批处理文件并执行批处理文件。
exec('E:\\files\\p4 -P -u user1 -c client1 sync ...');