2017-05-28 4 views
0

私は、起動前に他のマシンで実行されていないことを確認する方法を探しています。wampを起動する前に、既存の.pidを確認するにはどうすればよいですか?

私が把握した最良の方法は、MySQLフォルダ内の既存の.pidを確認することです。
最も簡単なことは、ショートカットを変更することですが、私はそれがafaikだとは思わない。 だから私はいくつかのことをする必要があります。 MySQLはを.pidファイルが存在する

  • チェックを格納され、見つかった場合、ファイルがどのようなマシン彼らにヒントを与えるために、ファイル拡張子MINUSの名前とその旨のエラーをスロー

    1. フィギュアアウトそれを実行している。
    2. 存在しない場合は、通常のショートカットのようにwampを開始してください。

    完了。

    wampが格納されている場所を1人だけと尋ねることができます。%wamp%\ bin \ mysql このスクリプトを試しましたが、正しく実行されず、2つのcmdウィンドウが開き、一時停止する。 おかげ ベア

    @echo off 
    cd "C:\google_drive\server\wamp64" 
    forfiles /p bin\mysql\ /m *.pid /s /c "cmd /c goto error" 
    start wampmanager.exe 
    exit 
    :error 
    echo I'm sorry, Mysql is already running so I can't start WAMP for you. Shutdown WAMP on @FNAME before running again." 
    pause 
    
  • +0

    私は多くのことをやりましたが、今は動作しますが、既存のWampインストールのレジストリキー値を取得する方法を知りませんでしたそのインストールパス私が思いついたのは.. '@echo off forfiles/p bin \ mysql \/m * .pid/s/c" cmd/c msg */time:0 Mysqlはすでに実行中です私はあなたのためにWAMPを開始することはできません。もう一度実行する前に、@ FNAMEでWAMPをシャットダウンしてください。 && exit start wampmanager.exe ' これは、batファイルがwampsディレクトリにあることを要求します。 (厄介なコードには申し訳ありませんが、ブロックにする方法を理解できませんでした) –

    +0

    wampmanagerはサービスですか?その場合は、sc.exeコマンドを使用して多くのチェック/操作オプションがあります。 – theglossy1

    +0

    'forfiles'は新しいコマンドプロセスを開始します。その新しいプロセスからの 'GOTO'は動作しません(参照先/ジャンプ先はありません)。 'もし存在すれば' C:\ google_drive \ server \ wamp64 \ bin \ mysql \ * .pid "'はどうでしょうか? – Stephan

    答えて

    0

    あなたが持つファイルの存在を確認することができます、私は推測する、複数の.pidファイルがあるかもしれません

    if exist "C:\google_drive\server\wamp64\bin\mysql\*.pid 
    

    しかし、あなたの記述ごとに、それほど良くあり選択:

    setlocal enabledelayedexpansion 
    set "running=" 
    for %%a in ("C:\google_drive\server\wamp64\bin\mysql\*.pid") do set "running=!running! %%~na," 
    if "%running%" neq "" (
        echo I'm sorry, Mysql is already running so I can't start WAMP for you. 
        echo Shutdown WAMP on: %running% before running again. 
        pause 
        goto :eof 
    ) 
    start wampmanager.exe 
    
    +0

    "setlocal"は何をしますか?どのように有益ですか? 私はあなたのコードが好きです、それはポップアップを作成しますか? これは私が働いているものですが、おそらくあなたのバージョンはよりエレガントです。'@echo off forfiles/p bin \ mysql \/m * .pid/s/c" cmd/c msg */time:0 Mysqlはすでに実行されているので、WAMPを起動できません再起動する前に@FNAMEのWAMPをシャットダウンしてください。 " && exit start wampmanager.exe' おかしなコードで申し訳ありませんが、あなたのような素敵なブロックでそれを取得する方法はまだ分かりません。 –

    +0

    'for'ループ内にサーバのリストを構築するには[delayed expansion](https://stackoverflow.com/a/30284028/2152082)が必要です。だから[setlocal](https://ss64.com/nt/setlocal.html)が必要です。それに加えて、 'setlocal'の後に宣言された変数はすべてローカルに保持されます(パーマネントではなく、バッチファイルが終了するとすぐに消えます)。コメントにコードを適切に書式設定する方法はありません。コマンドや短い行で動作しますが、より長いコードスニペットでは面倒です。 – Stephan

    +0

    tyvm sir。あなたは大きな助けをしてきました。今私はそれをしなければならないすべての設定が正常に動作するようになる。 –

    関連する問題