スポンサーリンク
IT全般

【実録】Windowsバッチが止まる?「Enterキー待ち」の怪現象と簡易編集モードの罠

IT全般
この記事は約4分で読めます。

自作バッチの実行中、画面が止まっている気がしてついEnterキーを連打してしまう……。そんな「せっかち」なエンジニアが、Windowsの仕様に翻弄された記録です。
先日、私は15分かかる処理のテストで、この「せっかち」が引き起こす底なし沼にはまりました。

1. ログが止まった? 15分間の「フリーズ」に隠された衝撃の真実

その日は、大量のデータを処理するバッチの最終確認。 実行ボタンを押し、黒い画面にログが流れるのを確認して、私はコーヒーを飲みながら待っていました。

……5分経過。ログが止まっているように見える。 「あれ、フリーズしたかな?」 不安になった私は、生存確認のつもりで画面内をカチカチッとクリックしました。

……さらに10分経過。一向に進まない。 「これはおかしい。無限ループか?」 しびれを切らしてEnterキーを叩き込んだ瞬間、タタタタッ!と猛烈な勢いでログが流れ出し、一瞬で処理が完了しました。

「ほら! やっぱりEnterを押さないと進まなかったじゃないか!」 ……とドヤ顔をしたのも束の間。実はこれ、すべて私の「自作自演」だったのです。

2. 犯人は「簡易編集モード」

バッチが「いったりいかなかったり」する正体は、プログラムのバグではなく、Windowsの「簡易編集モード」という設定でした。

このモードは、コマンドプロンプト上でマウスを使ったテキスト選択やコピー&ペーストを簡単にするためのもの。しかし、その「親切心」が時に牙を剥きます。

💡 簡易編集モードのメリットとデメリット

なぜこの機能が存在し、なぜ私を苦しめたのか。その特性を整理してみました。

特徴内容
【メリット】直感的なコピペ右クリックメニューを開かずとも、ドラッグだけで範囲選択、右クリックだけでペーストができる。ログの解析時には神機能。
【メリット】画面の固定選択を開始するとスクロールが止まるため、流れるログの中から特定の行をじっくり読み取ることができる。
【デメリット】処理のサスペンド画面をクリックした瞬間にプログラムの実行が一時停止する。 ユーザーがコピーを終えるまで、システム側が「気を利かせて」待機してしまう。
【デメリット】ステルス停止エラー終了ではなく「一時停止」なので、一見するとフリーズしたのか処理中なのか区別がつかない。

つまり、私の行動を振り返るとこうなります:

  • 「動いてるかな?」とクリック: ここで私が「一時停止ボタン」を押した。
  • 「遅いな」と放置: 停止させたまま10分待機。
  • 「えいっ」とEnter: コピー確定(選択解除)となり、一時停止を解除した。

「Enterを押さないと進まない」のではなく、「自分が止めたものを、自分で再開させていただけ」でした。

3. 「こんなに不安定なら、ジョブ化(自動化)なんてできない!」という誤解

テスト中にこの現象に遭遇した私は、正直こう思いました。
Enterキーを押さないと動かないバッチはジョブ化などの自動化はできない。

しかし、これは大きな誤解でした。 実は、この怪現象は「人間が画面を見ているとき」にだけ起こる問題です。

JP1などのツール経由で実行されるバッチは、背景(バックグラウンド)で動くため、そもそも操作する「画面」が存在しません。クリックされる心配も、簡易編集モードが発動する余地もないのです。 つまり、「手動テストのときだけ異常に繊細で、本番(自動実行)のときは図太く動く」。これがバッチ処理の裏の顔です。

4. 【対策】せっかちな人ほど「既定」からOFFに!

とはいえ、手動テストのたびにブレーキをかけていては仕事になりません。「プロパティ」ではなく、「既定(デフォルト)」を変えて、根本から対策しましょう。

  1. コマンドプロンプトのタイトルバーを右クリック。
  2. 「既定(Defaults)」を選択。
    (※現在の画面だけでなく、今後開くすべての画面に適用するのがコツ!)
  3. 「オプション」タブの「簡易編集モード」のチェックを外す
  4. 「OK」で保存。

これで、いくら画面内を連打しても、バッチが止まることはありません。

5. まとめ:そのEnter、本当に必要ですか?

もしバッチが止まっているように見えたら、まずは落ち着いてウィンドウのタイトルバーを見てください。先頭に「選択」や「Select」と出ていたら、それはあなたが無意識にかけたブレーキのサインです。

「簡易編集モード」はOFFにしたほうが無難かもしれません。

コメント

タイトルとURLをコピーしました