0

我们目前必须将大约 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 文件?我目前很难过。

非常感谢

菲尔

PS我正在通过命令行运行PHP脚本:

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

1 回答 1

2

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

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

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

于 2012-08-29T08:09:53.673 回答