PHPスクリプトから.batファイルを実行する方法を教えてもらえますか?
私が試してみました:
exec("C:\[path to file]");
system("C:\[path to file]");
何も機能していません。 PHPマニュアルを確認し、グーグルで検索しましたが、適切な答えが見つかりません。
Windows 2003 Serverを実行していますが、手動で.batファイルを正常に実行しましたが、必要な処理を実行します。プログラムで起動できる必要があります。
cmd
経由で実行する必要があるかもしれません。例えば:
system("cmd /c C:[path to file]");
<?php
exec('c:\WINDOWS\system32\cmd.exe /c START C:\Program Files\VideoLAN\VLC\vlc.bat');
?>
exec()
関数を使用すると、cmd
端子を開いて、それに直接コマンドを入力しているように見えます。
このような$str = exec('start /B Path\to\batch.bat');
のような単一引用符を使用します
_/B
_は、バットがバックグラウンドで実行されることを意味するため、残りの php command
が実行され、後で使用するためにresult
が保存される$str = exec('start /B /C command', $result);
とは対照的に、その行の実行後も継続します。
PS: WindowsとLinuxの両方で機能します。
詳細はこちら http://www.php.net/manual/en/function.exec.php :)
<?php
pclose(popen("start /B test.bat", "r")); die();
?>
windowsマシン8でIIS 8それがどのように機能するかを私に聞かないでください。
$ test = Shell_exec( "C:\ windows\system32\cmd.exe/c $ streamnumX.bat");
このスニペットは作業コードからのものです
Batファイルは、Windows GUIまたはタスクスケジューラからだけでなく、必要なときにPHPスクリプトから直接トリガーできます。ただし、ほとんどの場合、30〜60秒実行されます。 PHP configuration。BATファイル内のジョブが長く、PHPスクリプトを凍結したくない場合、別のプロセスとしてBATジョブをforkする必要があります。 _php.exe
_であり、Apacheに依存しない。
これは バックグラウンド Windowsのモードは、Apache PHPスクリプトを停止しないタスクマネージャーからの個別のプロセス_cmd.exe
_および_php.exe
_として表示されます。ログファイル経由。
_file_scanner.php
_の私のケースでは、CPU関数を過負荷にしないために、PHP関数sleep()
を使用して数時間続くファイルの大きな配列に対して、ループでいくつかの重い計算を行います。
成功またはファウティースタートを知りたい場合は、ajaxを介してクエリできるファイル_$r
_から成功ポイナー結果が得られます。私の場合、_file_scanner.php
_はログファイルにメッセージ_somefile.jpg - OK
_を書き込みます。AJAXを使用して進行状況を表示するためにUIにロードできます。
[〜#〜] php [〜#〜]
_/**
* Runs bat file in background mode
*
*/
function run_scanner() {
$c='start /b D:\Web\example.com\tasks\file_scanner.bat';
$r=pclose(popen($c, 'r'));
return json_encode(array('result'=>$r));
}
_
[〜#〜] bat [〜#〜]
_@echo Off
D:\PHP\php.exe D:\Web\example.com\tasks\file_scanner.php > D:\Web\example.com\tasks\file_scanner.log
exit
_