• 締切済み

バッチファイルlを2重起動できないようにしたい

notnotの回答

  • notnot
  • ベストアンサー率47% (4843/10252)
回答No.2

今実行中であるという事を表すファイル(ディレクトリ)を作って、他の処理が実行中かどうか判断します。 md \zzzzzz || goto BUSY やりたい処理 rd \zzzzzz goto :EOF :BUSY echo 他の人が処理中です pause おおむね↑こんな感じで。 No1の方の物と基本的には同じですが、No1だと二人の人が同時に始めた場合、1行目と2行目の間に穴があるので、同時に実行されてしまう可能性がわずかにあります。 実際には、「やりたい処理」の途中でバッチをctrl-Cで止めた場合に\zzzzzzが残ってしまう対応も必要ですが。

VBScriptingMan
質問者

補足

ご回答ありがとうございます。 助かります。 この方法だと、もし上記「やりたい処理」で予期せぬエラーが発生した場合に、異常終了となり、 \zzzzzzフォルダが残ったまま終了となり、二度と実行出来なくなることが心配なのですが、 エラーでの異常終了への対応で何か方法はありますでしょうか? よろしくお願い致します。

関連するQ&A

  • バッチファイルを1個だけしか起動しないようにしたい

    エクスプローラー上から バッチファイル(test.bat)を ダブルクリックしてバッチファイルを実行しています。 通常はコマンドプロンプトが1個だけ表示されて、 バッチファイルが実行して実行が終了すると コマンドプロンプトも閉じられます。 しかし、時々、 コマンドプロンプトが2個表示されることがあります。 つまり、ダブルクリックが、 1回ではなく2回実行されたと誤認識されて、 同じバッチファイル(test.bat)が 2つ起動してしまったと思われます。 当然、その後の処理はおかしくなります。 (バッチファイル(test.bat)の中に 何らかのコードを追加するなどして) 必ず1個だけしか起動しないようにすることは、 できないでしょうか。 (Windows10)

  • バッチファイルを起動したけど、win98では引数が長すぎて。。。

    VBからバッチファイルを起動する処理を作成中です。 SHELL コマンドで実行しているのですが、 そのバッチファイルの引数がすごく長いのです。 >batch.bat "引数1" "引数2" "引数3" とする際、引数1 ~ 引数3までの合計文字列が 128?byte を超えてしまい、 win98では、使えないプログラムがあります。 複数の引数をまとめたファイルを、バッチファイルの 引数として起動させる等、 回避作はあるのでしょうか? 教えてください。

  • パフォーマンスモニタの警告で、バッチファイルが実行しない。

    Win2003Serverのパフォーマンスモニタ、バッチファイルの設定について教えてください。 警告で、「トリガされたときの操作」-「次のプログラムを実行する」 で、.batのファイルを指定し、アラートメールを送ろうとしているのですが、 送信できません。 バッチファイルの中身は、Blat.exeのコマンドを書いたものです。 バッチファイル単体では問題なく動作するのですが、 トリガからのバッチファイル実行ができていないようです。 ログを見てもエラーが出ていませんし、 バッチ実行と同時に、ログエントリの作成も設定し、 このログエントリは問題なく行っているようです。 ただ、バッチファイルを設定するだけでは、 動いてくれないんでしょうか。 教えてください。 お願いします。

  • バッチファイルについて

    バッチファイル(.bat)について不明な点が ありますので、詳しく方ご教授お願い致します。 コマンドプロンプトを開き、対象のバッチファイルを ドラッグアンドドロップし、実行すると正常通りの結果が 得られました。 ただ、バッチファイルをダブルクリックし、実行すると 実行されません。 原因を詳しい方、ご教授お願い致します。

  • バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。

    バッチファイルで他のバッチファイルを呼び出した後、元に戻ってこれない。 バッチファイルでほかのバッチファイルを呼び出した後の処理で困っています。 どうぞ教えてください。 「A.bat」というバッチファイルを実行すると、「1.bat」というバッチファイルを 実行させ、「1.bat」の実行結果によって、処理を分岐させたいと考えています。 「1.bat」をcallで呼び出し、実行はできたのですが、「1.bat」は最後にエンタキーを 押さないと終了しないようになっています。そのため、「エンターキーを押して終了させて ください」というメッセージが出たままの画面で終わってしまい、「A.bat」に帰ってくることが できません。 「1.bat」は中身を扱えないようにしてあるバッチファイルなので、こちらでエンターキーを 押さずに終了させるようにはできません。何かいい方法はないでしょうか?

  • エクセルVBAで、バッチ処理を起動すると・・・

    Windows/XP/pro、エクセル2002 使用です。 c:\autocsvフォルダーに、MS-DOSコマンドを使ってFTPを自動実行しサーバーからCSVを自動的に取得する.TXTファイルと、バッチファイルの.batファイルをおいています。 参考URL http://www.ponko2.com/ftp_bat.html この.batファイルをVBAから呼び出して実行させるように下記のコードを記述ましたが、ファイルは起動するものの、CSVファイルを取得(またはLogin)できません。Openメソッドを使ってもうまくいきませんでした。実行する関数の間違いと思っていますが、それとも、VBAからバッチファイルを実行する場合の何か決まりごと等があるのでしょうか? Sub test() Dim str As Variant str = Shell("c:\autocsv\auto.bat", vbNormalFocus) Application.Wait Now + TimeValue("00:00:10") End Sub (VBAの実行をステップインを使って1行ずつ実行してもファイルを取得できません) なお、.batファイルを単独で起動させた場合は、問題なくcsvファイルの取得はできています。 お手数ですが、ご指導いただけますようお願いします。

  • リモートでバッチを実行(Windows)

    お世話になります。 クライアントサーバ(Windows2003Server)からリモートサーバ(Windows2003Server)に 存在するバッチファイル(Remote.bat)をリモートで実行する方法(コマンド)をご教授ください。 方法としては、Client.bat(クライアントサーバに存在)というバッチファイルから、 Remote.batを実行したいです。 Unixのrshコマンドみたいなイメージです。 宜しくお願いします。

  • バッチファイルで実行できたりできなかったり

    こんにちは。 バッチファイルとコマンドプロンプトについて、少々お伺いしたいことがあります。 まず、コマンドプロンプトで以下のコマンドを打ち込んでみたところ、すべて正常に実行することができました。 ping [example.com] > result.txt tracert [example.com] >> tr_result.txt ipconfig /all > ipc_result.txt 次に、各コマンドをテキストファイルに書き込んで、それぞれ "p_test.bat" # 内容は ping コマンド "tr_test.bat" # 内容は tracert コマンド "ipc_test.bat" # 内容は ipconfig コマンド と命名しデスクトップに配置、ダブルクリックで実行してみました。 すると、このうち正常に実行(結果をテキストファイルに出力)されたのは tr_test.bat のみでした。 ここで質問なのですが、なぜこのような違い(バッチファイルにすると実行できるものとできないものに分かれる)が起こるのでしょうか? バッチファイルの作り方やとコマンドプロンプトについて調べてみましたが、説明を見つけることが出来ませんでした。 この辺の理論について詳しい方がおりましたら、ご教示頂きたく思います。 ちなみに、OS は Windows XP SP2 です。 よろしくお願いいたします。

  • ckw.exeでバッチファイル

    バッチファイル(.cmd/.bat)を直接ckwで実行したいのですが、いい方法はありますでしょうか。 cmd/batファイル(ckwを立ち上げるコマンドは書かない)をダブルクリック→ シースルーでckwが直接立ち上がる→ そこでバッチ処理をする という感じにしたいのです。 よろしくお願いします。

  • バッチファイルの呼び出し

    バッチファイル間のキックについて教えてください。 1)バッチファイルA.batでB.batをキックするにはcallでいいでしょうか? 2)あるWindowsサーバから、違うWindowsサーバのバッチファイルをキックするにはどのようにすればいいのでしょうか。