土曜の昼、学校帰りの昼メシの思い出

どのバージョンからかは分かりませんが、最近のWindowsのコマンドプロンプトは、バッチファイル実行中等にウインドウ内をクリックすると停止するようになっているようです。

これを、クリックしても止まらないようにしたいのですが、何か方法はないでしょうか。

人に渡す事を想定していますので、環境を変更したり、プロパティを変更する事は出来ません。

ユーザーによる間違った停止を防ぎたいという事です。

ご存知の方がおられましたら、教えて頂けると有難いです。

質問者からの補足コメント

  • 「バッチファイル実行直前から2秒間だけ簡易編集モードを無効にする」という処理が実現出来ました。動作も問題無いようです。

    これで行こうと思います。お二人とも、本当にありがとうございました。助かりました。

    No.5の回答に寄せられた補足コメントです。 補足日時:2017/12/24 11:19

A 回答 (5件)

固定がだめなら、そのバッチが効いてる間だけsetxコマンドで一時的に書き換えて、バッチ終了時に戻してみては?

この回答への補足あり
    • good
    • 0
この回答へのお礼

再度、ご回答ありがとうございます。

「一時的に書き換える」というのは良いアイディアかも知れませんね。

「簡易編集モードか否か」の設定はレジストリ内にあり、環境変数内には無いので、SETXコマンドでは変更出来ないのですが、REGコマンドで変更出来ますので、バッチファイル実行直前に「簡易編集モード」を「無効」に変更し、バッチファイル実行直後に「有効」に戻すのが良いかも知れませんね。

この切り替えの数秒間に、停電や異常終了で処理が停止した場合は、設定が復元されず、相手のシステムを変更したままになってしまいますが、現実的にはかなり起こりにくい事なので、この方法で良いかも知れませんね

ただ、簡易編集モードを初めから無効にされている方もおられると思いますので、こちらで簡易編集モードを「無効」→「有効」にするのではなく、「無効」→「元の状態」という風にしないといけませんね。ここが少しややこしいですね。

しかし、この方法が現実的かも知れませんね。ちょっとこの処理を書いてみます。ありがとうございました。

お礼日時:2017/12/24 08:12

>クリックしても止まらないようにしたいのですが、何か方法はないでしょうか。


本来、バッチ処理が止まるものではありません。
止まるのはコンソールへの文字出力です。

進捗状況をユーザーに見せているとの事ですから、そこで一時停止しているのでしょう。
そういう訳で、コマンドプロンプトでやるなら
・コンソールへの進捗出力を止め、代わりに
・TITLE コマンドで進捗表示する、
・適当な間隔で Color コマンドで色変えして強調する
のが簡単で良いでしょう。
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

私の表現が悪かったですね。おっしゃる通り「一時停止」です。

表題の件の直接的な解決策を頂く事を想定して質問しており、代替案を頂く事は想定していなかったので、具体的な状況は書かなかったのですが、それだと問題があるようなので、以下に具体的な状況を書かせて頂きます。

当該の処理は、まず、メインのEXEファイルを実行する事でGUIが表示されます。

そこに「実行」というボタンがあります。

それをクリックすると、バッチファイルが起動します。

この段階で、ユーザーが間違ってバッチファイルのウインドウ内をクリックしてしまうと、処理が一時停止してしまう恐れがあるという事です。

コマンドプロンプトに親しんだ人間なら、Enterキーで処理を再開出来る事は分かると思いますが、PCにあまり詳しくない方に渡す事も想定していますので、何らかの対策を取らないといけません。

そういう状況ですので、提案して頂いた方法でも、クリックされれば処理が停止してしまいますので、それらの方法は使えないという状況なのです。

お礼日時:2017/12/24 07:03

ん・・・ごめんなさい、waitは他の処理を終わるまで待つだった(汗



マウス操作できないようにするなら、コマンドプロンプトのメニューバー(?上の帯みたいなところ)を右クリックで、プロパティを開いて、簡易編集モードのチェックを外すと、マウスで操作できなくなるのでマウスでクリックしても止まりませんよ
    • good
    • 0
この回答へのお礼

再度、ご回答ありがとうございます。

確かに、おっしゃる方法で実現出来るのですが、プロパティを編集しますと、どうも環境まで変更されてしまうようで、今回それは出来ないのです。

現在、フリーのコンソールである「ConEmu」「Console」「NYAOS」で代替出来ないか試しています。

どれもクリックでは停止しませんが、引数から「引数の付いたバッチファイル」を実行する事が出来ません。

「ConEmu」は、引数から「バッチファイル」を実行する事は出来ますが、「引数の付いたバッチファイル」は実行出来ません。

「Console」「NYAOS」は、引数から「バッチファイル」を実行する事すら出来ません。

現在試している段階なので、何かオプションを付ければ出来るかも知れませんが、その方法があるかはまだ分かりません。

実行したい書式は、以下のような感じです。

――――――――――――――――

コンソール.exe バッチファイル.bat "AAA AAA" "BBB BBB" "CCC CCC"

――――――――――――――――

引数に「半角スペース」や「ハートマーク」等の文字が入っていても実行出来る事が必須です。

実現が難しいようなら、バッチファイルの初回起動時に「ウインドウ内をクリックすると処理が停止する場合がありますのでクリックしないでください。停止した場合はEnterキーを押して再開してください。」という旨のメッセージを表示しても良いのですが、あまりスマートではない気がします。

コンソールを非表示にしても良いのですが、それだとユーザーが実行に気付かず、何も起きないと思って多重起動される恐れがあります。

バッチファイルが実行された際に、コンソールは表示せず、「しばらくお待ちください・・・」というダイアログを表示しても良いのですが、それもあまりスマートではない気がしています。

バッチファイルの処理は、数分、数十分と長く掛かる場合もありますので、コンソールがフリーズや異常終了した際に、ユーザーをずっと待たせる事になるからです。

そんなこんなで、現在色々と模索中です。

もう少し何か方法が無いか考えてみます。ありがとうございました。

お礼日時:2017/12/23 20:23

では、


start /wait バッチファイル名.bat
    • good
    • 0
この回答へのお礼

再度、ご回答ありがとうございます。

試してみましたが、やはりクリックで停止してしまいます。

お礼日時:2017/12/23 14:34

start /b バッチファイル名.bat



で、ウィンドウ開かずにバッチを起動
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お教え頂いた方法を試してみたのですが、CALLコマンドのような動作になり、ウインドウ自体はそのまま見えてしまいます。

又、長い処理を実行しますので、進捗状況をユーザーに見せる為に、コマンドプロンプトのウインドウ自体は非表示にせずに見せておきたいのです。

お礼日時:2017/12/23 14:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報