0

会社のソフトウェアを新しく展開するためのバッチを作成しています.これまでのところ...

wscript.exe "invisible.vbs" "apache_start.bat" /wait
wscript.exe "invisible.vbs" "mysql_start.bat" /wait
"C:\Program Files\Internet Explorer\iexplore.exe" http://localhost

ご覧のとおり、このスクリプトは apache を起動し、次に mysql を起動し、IE でデフォルト ページを開く必要があります。

問題は、ユーザーがこのスクリプトを 2 回実行すると、apache と mysql が 2 回実行され、2 つの別々のインスタンスがロードされることです。私が必要とする解決策は、プロセスが既に実行されているかどうかを確認し、実行されていない場合は 2 つの wscript コマンドを実行する方法です。私はシェルで絶対にひどいので、具体的な回答をしてみてください! 私はシステム管理者ではなく、ソフトウェア エンジニアです。助けてくれてありがとう!

4

2 に答える 2

0

ソフトウェア エンジニアとして、あなたは一部のシステム管理者よりもスクリプト作成に優れていると思います...

PowerShell を使用すると、これが簡単になります。次のテンプレートを使用してサービスを実行します。これを 2 回使用し、上記のように IE を起動する必要があります。

If ((Get-Process mysqlprocessname.exe)) {Write-Host Skipping MySQL}
Else { Start-Process ...}

PowerShell でプロセスを開始する最適な方法を調べるには、数分かかります。また、スクリプトが IE と Apache の起動を待機するように、Start-Process を Out-Null にパイプすることもできます。

他の人は、バッチファイルからのより簡単な方法でチャイムを鳴らしたいと思うかもしれません.

于 2012-05-21T17:15:51.740 に答える
0

XAMPP の場合、サービスが実行されているかどうかを確認するために XAMPP が使用する apache/bin フォルダーに pv.exe ファイルがあります。すばらしい情報については、このスレッドの WorldDrknss の回答をご覧ください: http://www.apachefriends.org/f/viewtopic.php?p=80047

問題を解決するコードは、mysql_start.bat ファイルを次のように変更することです。

@echo off 
apache\bin\pv mysqld.exe %1 >nul 
if ERRORLEVEL 1 goto Process_NotFound 
echo MySQL is running 
goto END 
:Process_NotFound 
echo Process %1 is not running 
mysql\bin\mysqld.exe --defaults-file=mysql\bin\my.ini --standalone --console
goto finish 
:finish

これにより、mysqld.exe が実行されているかどうかがチェックされます。もしそうなら、それはただそれをエコーアウトします。そうでない場合は、サービスを開始します。

于 2012-05-22T02:05:48.397 に答える