人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile


PHP&Windows

exec()関数を使って、他のバッチファイルを呼びこみ、
別のPHPを実行しているのですが、その実行元となるPHPのコマンドプロンプト画面がとじません。

cmd.exe c/ で実行しているのですが、それでも、PHPの処理が終了後も、コマンドプロンプトの画面自体は残っています。

どうすれば閉じますか?


●質問者: webtomake
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

この質問と同じ話ですよね。
別ウィンドウのコマンドプロンプトで BATCH.bat を起動するけど、そのウィンドウが開きっぱなしになってるという。

ふたつ思いつきました。

ひとつは、start コマンドを使わない方法。
呼び出し側の php スクリプトをこうします。

<?php
echo "hi!";

exec("cmd.exe /c BATCH.bat"); // ★ start コマンドを使わない
exit();
?>

BATCH.bat は、この php スクリプトを呼び出したコンソールウィンドウの中で動きます。

もうひとつは、呼び出し先の BATCH.bat の最後に exit を書いておく。

@echo off

php ...

exit ★ これ

この exit を書いておくと、BATCH.bat の処理が終わるとウィンドウが閉じると思います。


webtomakeさんのコメント
ご回答、ありがとうございます。 質問内容が正しくありませんでした、 下記の場合、どのようになりますでしょうか? <?php echo "Start"; pclose(popen("cmd.exe /C start C:\BATCH.bat","r")); exit(); ?> 尚、 start無しで pclose(popen("cmd.exe /C C:\BATCH.bat","r")); とすると、パイプラインがありません、とエラーが出てしまいます。 ※exec()関数を利用しない理由として、Batch実行時に実行完了を待たないようにする為です。 よろしくお願いします。

a-kuma3さんのコメント
ふたつ質問。 - BATCH.bat の最後に exit を入れるのを試しましたか? - BATCH.bat の内容は、別の php スクリプトを起動するだけでしょうか?

webtomakeさんのコメント
すいません、しっかりとご回答を読んでおりませんでした。 最後に exit を記述したら解決しました。 ご丁寧にありがとうございました。

a-kuma3さんのコメント
それは良かった <tt>:-)</tt> BATCH.bat の中身が php のスクリプトを起動しているだけだったら、以下のようなやり方もあるようです。 http://www.miuxmiu.com/archives/tag/background http://www.phppro.jp/qa/977
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ