質問

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 の残りは、< code> $ str = exec( 'start / B / C command'、$ result); command が実行され、後で使用するために result が保存されます。

PS: WindowsとLinuxの両方で機能します。
詳細はこちら http://www.php.net/manual/en/function.exec .php :)

<?php
 pclose(popen("start /B test.bat", "r")); die();
?> 

IIS 8を実行しているWindowsマシン8マシンで、コウモリの名前を付けてパスを忘れることでバッチファイルを実行できます。または、バットをc:\ windows \ system32に入れて それがどのように機能するかを私に聞かないでください。笑

$ test = shell_exec(&quot; C:\ windows \ system32 \ cmd.exe / c $ streamnumX.bat&quot;);

このスニペットは動作中のコードからのものです。

batファイルは、Windows GUIまたはタスクスケジューラからだけでなく、必要なときにPHPスクリプトから直接トリガーできます。ただし、ほとんどの場合、30〜60秒間実行されます。 PHPの設定によります。 BATファイル内のジョブが長く、PHPスクリプトをフリーズしたくない場合は、 php.exe を使用してBATジョブを別のプロセスとしてフォークする必要があり、Apacheに依存しません。

これはWindowsのバックグラウンドモードで実行され、Apacheを停止しないタスクマネージャーからの個別のプロセス cmd.exe および php.exe として表示されます。 PHPスクリプト。スクリプトによって生成されたメッセージは保存され、ログファイルを介して取得されます。

file_scanner.php の場合、PHP関数 sleep()を使用して、数時間続く可能性のある大きなファイル配列のループで重い計算を行いますCPUをオーバーロードします。

成功ポイナーの結果はファイル $ r から得られます。成功または失敗の始まりを知りたい場合は、ajax経由でクエリできます。私の場合、 file_scanner.php はログファイルにメッセージ somefile.jpg-OK を書き込みます。数秒ごとに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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top