带有参数的PHP Windows Bat文件

时间:2012-08-29 08:06:17

标签: php windows batch-file filepath

我们目前必须将大约200名学生导入我们的活动目录。我们有一个BAT文件,用于在服务器上创建用户和文件夹。

我编写了一个脚本,它扫描我们的MSSQL数据库中的新学生,将它们保存到一个数组中,然后使用system()调用cmd.exe并运行BAT文件来创建学生。

BAT文件位于我的Y驱动器上(位于另一台服务器上)。我们目前也使用DFS路径,因此我也可以通过这种方式访问​​bat文件。

值得注意的是: 1)BAT文件的两个路径都有空格 2)我还需要将参数传递给BAT文件

目前,这是我在PHP中的system()参数的状态:

$bat = escapeshellcmd("cmd /c Y:\SharedRes\Path To Createstudent\createstudent.bat {$stuArray['forename']} {$stuArray['surname']} {$stuArray['username']} {$stuArray['year']} {$stuArray['sf']}");
system($bat);

使用DFS路径:

$bat = escapeshellcmd("cmd /c '\\organisation.local\Path To Createstudent\createstudent.bat {$stuArray['forename']} {$stuArray['surname']} {$stuArray['username']} {$stuArray['year']} {$stuArray['sf']}'");
system($bat);

每次尝试运行时,都会出现以下错误:

The filename, directory name, or volume label syntax is incorrect

如何让PHP实际运行BAT文件的任何想法?我现在很难过。

非常感谢

菲尔

P.S我通过命令行运行PHP脚本:

php.exe -f "C:\import.php"

1 个答案:

答案 0 :(得分:2)

如果批处理文件位于带空格的路径中,则需要引用参数:

cmd /c "Y:\SharedRes\Path To Createstudent\createstudent.cmd" ...

此外,如果参数包含空格,您也需要引用它们。单引号无法被cmd识别,必须是双引号。