beroの日記: Windowsでコンソールアプリをコンソールウィンドウを開かずに実行する 4
日記 by
bero
nginx for Windows でPHPを動かす
あたりを参考にWindows上のテスト環境をApache+モジュールからnginx+fastcgiにしようとしたが、コンソールウィンドウが残ってウザイ。
nginxは一瞬コンソールウィンドウを開いた後自前で閉じるのだが、php-cgiをfastcgiモードで実行すると常駐してコンソールウィンドウが開いたままになる。
batのstart命令の引数でできないかと思ったが見当たらない
WSHだとRunメソッドの第2引数で制御できる
batをWSHで書き直した例
start.js
WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run('nginx.exe',0);
WshShell.Run('c:/opt/php/php-cgi.exe -b 127.0.0.1:9000',0);
stop.js
WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run('nginx -s stop',0);
WshShell.Run('taskkill /f /IM php-cgi.exe',0);
WSHはJSまたはVBで書けるが、JSなのは単に好みの問題。まあラッパが書ければC+Win32APIでもC#でも何でもいいけどWSHが手軽。
なおphp-cgi.exeはphp.iniにミスがあったりすると本来はコンソールにエラーを吐くが、非表示だと見えないので、普通に起動して動作確認してから。
良く読まずに書くw (スコア:1)
startコマンドの場合 (スコア:0)
start /Bでは?
Re:startコマンドの場合 (スコア:1)
/bは
なので、常駐アプリだと新しいウィンドウでなく起動したウィンドウが開きっぱなしになるだけで状況は変わりません
Re: (スコア:0)
startコマンド自体を実行するためにコンソールウィンドウが一瞬開いてしまうわけで