- ベストアンサー
バッチファイルを1個だけ起動する方法
- バッチファイルを実行する際に、コマンドプロンプトが2個表示される問題が発生することがあります。この問題を解決するためには、いくつかの方法があります。
- まず、バッチファイルの中に処理を追加することで、2回の実行を検知し、2回目の実行を無視することができます。
- また、バッチファイルをショートカットとして作成し、ショートカットのプロパティで「1回のみ実行」オプションを有効にする方法もあります。これにより、同じバッチファイルが2回起動されることを防ぐことができます。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
簡単にやるなら、大きな方針は、 test.batは、まずc:\にtestbat.txtを見つけたら、そこで終わる。 test.batは最初にc:\testbat.txtがあるかないかと見て、c:\testbat.txtがなかったら、c:\testbat.txtを作成、最後まで実行して、最後の最後にc:\testbat.txtを削除する。 ことである。
その他の回答 (7)
- m5048172715
- ベストアンサー率16% (860/5261)
リダイレクション等のコードをすっと書けてしまうのは、質問者はベテランだなあ。嫌みでは無くて。バッチファイルの先頭にif exist test.txt exitをつけて以後の処理するとき、 クリックやキー操作が猛烈に速いと、ファイル作成・判定がバッチファイルに追いつかない恐れがありますね。 「ファイル存在判定、1秒wait、ファイル存在判定」をセットにすれば、もっと安心ではないかと私は思いました。
お礼
つまり、 2つのバッチファイルが起動してしまった場合、 1つ目のバッチファイルでtest.txtが作成される前に、 2つ目のバッチファイルでtest.txtがないと 誤判定されてしまうようなことがあるということですね。 教えていただきましたように以下のように対応します。 if exist test.txt exit timeout 1 > null if exist test.txt exit ありがとうございました。
- maiko04
- ベストアンサー率17% (345/1956)
>ENTER+クリックは2回実行されました。 理由についてはわかりません。 そんな機能は意味ないと思いますし。 私もこんなのは初めて見ました。 どこかで誤作動しているのだと思います。
お礼
ありがとうございました。
- maiko04
- ベストアンサー率17% (345/1956)
そんな事は言ってない。 クリック+ENTERと ENTER+クリックは違います。 こちらで確認しましたが、 クリック+ENTERは1回 ENTER+クリックは2回実行されました。 いずれにしても >1回ではなく2回実行されたと誤認識されて はおかしいです。そんな設定もありません。 Windowsをインストールし直したほうが良いのでは?と思いました。 上書きで直るのかクリーンインストールが必要かはわかりませんが。
お礼
ENTERキーを押しながらクリックではなくて、 クリックしてファイルを選択してから、 ENTERキー押すと1つだけ起動しました。 ありがとうございました。 なお、 >ENTER+クリックは2回実行されました。 と書かれていますが、 この理由が分かりましたら、 教えていただけないでしょうか。
- jrn700
- ベストアンサー率18% (251/1372)
ダブルクリックで2重になる事があるのでしたら、次のような方法では駄目なのですか? 「右クリック」で「開く」
お礼
「右クリック」の「開く」で1つだけ起動しました。 ありがとうございました。
- maiko04
- ベストアンサー率17% (345/1956)
ダブルクリックではなくて クリック+ENTERではどうかな?
お礼
回答ありがとうございます。 ENTERキーを押しながら、 バッチファイル(test.bat)をクリックしてみましたが、 非常にたくさんのコマンドプロンプト(50個以上)が起動して、 各々のコマンドプロンプトでバッチファイル(test.bat) が実行されてしまいます。 何度か確認しましたが同じ現象が発生します。 エクスプローラー上のファイルを クリック+ENTERすると何が起きるのでしょうか。
- TIGANS
- ベストアンサー率35% (245/681)
Windows10ならPowerShell系使えると思うので下記ではどうかな? https://qa.itmedia.co.jp/qa8490315.html
お礼
教えていただきましたリンク先を見てみましたが、 私にはかなり敷居が高そうで、 すぐには対応できそうにないので、 今後の参考にさせて頂きます。 ありがとうございました。
- m5048172715
- ベストアンサー率16% (860/5261)
簡単にやるなら、大きな方針は、 test.batは、c:\にtestbat.txtを見つけたら、そこで終わる。 c:\にtestbat.txtがなかったら、test.batは最後まで実行して、最後にc:\testbat.txtを削除する。 ことである。
お礼
No2でお礼コメントをします。 ありがとうございました。
お礼
教えていただきましたように、 先頭に if exist test.txt exit echo > test.txt を、 末尾に del test.txt を入れて確認しましたところ、 ダブルクリックを連続で何度か繰り返してみましたが、 1個だけ起動するようになりました。 ありがとうございました。