自作バッチの実行中、画面が止まっている気がしてついEnterキーを連打してしまう……。そんな「せっかち」なエンジニアが、Windowsの仕様に翻弄された記録です。
先日、私は15分かかる処理のテストで、この「せっかち」が引き起こす底なし沼にはまりました。
1. ログが止まった? 15分間の「フリーズ」に隠された衝撃の真実
その日は、大量のデータを処理するバッチの最終確認。 実行ボタンを押し、黒い画面にログが流れるのを確認して、私はコーヒーを飲みながら待っていました。
……5分経過。ログが止まっているように見える。 「あれ、フリーズしたかな?」 不安になった私は、生存確認のつもりで画面内をカチカチッとクリックしました。
……さらに10分経過。一向に進まない。 「これはおかしい。無限ループか?」 しびれを切らしてEnterキーを叩き込んだ瞬間、タタタタッ!と猛烈な勢いでログが流れ出し、一瞬で処理が完了しました。
「ほら! やっぱりEnterを押さないと進まなかったじゃないか!」 ……とドヤ顔をしたのも束の間。実はこれ、すべて私の「自作自演」だったのです。
2. 犯人は「簡易編集モード」
バッチが「いったりいかなかったり」する正体は、プログラムのバグではなく、Windowsの「簡易編集モード」という設定でした。
このモードは、コマンドプロンプト上でマウスを使ったテキスト選択やコピー&ペーストを簡単にするためのもの。しかし、その「親切心」が時に牙を剥きます。
💡 簡易編集モードのメリットとデメリット
なぜこの機能が存在し、なぜ私を苦しめたのか。その特性を整理してみました。
| 特徴 | 内容 |
| 【メリット】直感的なコピペ | 右クリックメニューを開かずとも、ドラッグだけで範囲選択、右クリックだけでペーストができる。ログの解析時には神機能。 |
| 【メリット】画面の固定 | 選択を開始するとスクロールが止まるため、流れるログの中から特定の行をじっくり読み取ることができる。 |
| 【デメリット】処理のサスペンド | 画面をクリックした瞬間にプログラムの実行が一時停止する。 ユーザーがコピーを終えるまで、システム側が「気を利かせて」待機してしまう。 |
| 【デメリット】ステルス停止 | エラー終了ではなく「一時停止」なので、一見するとフリーズしたのか処理中なのか区別がつかない。 |
つまり、私の行動を振り返るとこうなります:
- 「動いてるかな?」とクリック: ここで私が「一時停止ボタン」を押した。
- 「遅いな」と放置: 停止させたまま10分待機。
- 「えいっ」とEnter: コピー確定(選択解除)となり、一時停止を解除した。
「Enterを押さないと進まない」のではなく、「自分が止めたものを、自分で再開させていただけ」でした。
3. 「こんなに不安定なら、ジョブ化(自動化)なんてできない!」という誤解
テスト中にこの現象に遭遇した私は、正直こう思いました。
Enterキーを押さないと動かないバッチはジョブ化などの自動化はできない。
しかし、これは大きな誤解でした。 実は、この怪現象は「人間が画面を見ているとき」にだけ起こる問題です。
JP1などのツール経由で実行されるバッチは、背景(バックグラウンド)で動くため、そもそも操作する「画面」が存在しません。クリックされる心配も、簡易編集モードが発動する余地もないのです。 つまり、「手動テストのときだけ異常に繊細で、本番(自動実行)のときは図太く動く」。これがバッチ処理の裏の顔です。
4. 【対策】せっかちな人ほど「既定」からOFFに!
とはいえ、手動テストのたびにブレーキをかけていては仕事になりません。「プロパティ」ではなく、「既定(デフォルト)」を変えて、根本から対策しましょう。
- コマンドプロンプトのタイトルバーを右クリック。
- 「既定(Defaults)」を選択。
(※現在の画面だけでなく、今後開くすべての画面に適用するのがコツ!) - 「オプション」タブの「簡易編集モード」のチェックを外す。
- 「OK」で保存。
これで、いくら画面内を連打しても、バッチが止まることはありません。
5. まとめ:そのEnter、本当に必要ですか?
もしバッチが止まっているように見えたら、まずは落ち着いてウィンドウのタイトルバーを見てください。先頭に「選択」や「Select」と出ていたら、それはあなたが無意識にかけたブレーキのサインです。
「簡易編集モード」はOFFにしたほうが無難かもしれません。

コメント