我们目前必须将大约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"
答案 0 :(得分:2)
如果批处理文件位于带空格的路径中,则需要引用参数:
cmd /c "Y:\SharedRes\Path To Createstudent\createstudent.cmd" ...
此外,如果参数包含空格,您也需要引用它们。单引号无法被cmd
识别,必须是双引号。