0

現在、約200人の学生をActiveDirectoryにインポートする必要があります。サーバー上にユーザーとフォルダーを作成する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 に答える