86052


指定フォルダの全ファイルを削除するバッチファイルを作成しました。  
通常であれば10秒以内に処理終了するのですが、稀に処理にものすごく時間がかかる場合があります。計測していないのですが、体感としては30分以上です。

[code]

    cd K:\HOGE
    for /r /d %%a in (HOGE_DATA) do del/S /Q "%%a\*.*"
    
[/code]

Q1.稀に処理が遅くなる原因を確認する方法はありますか？  
今どうなっているのか確認したいので、コマンドプロンプトか何かでプロセス？ か何かを見ることはできますか？

Q2.バッチファイルの処理が終わらない時、途中で強制終了する方法はありますか？  
いつまで経っても黒い画面のままなので、一旦処理を終わらせたい

Q3.エラー処理を追加できますか？  
何分以上応答がなかったら一旦バッチファイル処理自体を途中でも終了する、ようなことをコードに追加することはできますか？

環境  
Window 10


CC BY-SA 4.0
2022-01-30T03:56:39.867
86014
2022-02-01T01:43:53.163
7886
question
batch-file
処理に時間がかかることがあるバッチファイルの対応。途中で強制終了する方法やエラー処理について


Q1.稀に処理が遅くなる原因を確認する方法はありますか？  
A1.原因を確認するとまではいきませんが、何かしらの情報を取得するためには、以下のコマンドが使えるかもしれません。

参照記事：  
[tasklist](https://docs.microsoft.com/ja-jp/windows-
server/administration/windows-commands/tasklist)  
[tasklist コマンドの基本](https://maku77.github.io/windows/admin/tasklist.html)  
おそらくタスクバーやスタートメニューを右クリックすると表示されるタスクマネージャーでの「プロセス」とか「詳細」の表示内容と同じものと思われます。

他には[Sysinternals](https://docs.microsoft.com/ja-
jp/sysinternals/)で配布されている以下のいくつかのコマンドで何か情報が取れるかもしれません。  
[プロセス モニター](https://docs.microsoft.com/ja-jp/sysinternals/downloads/procmon)
現時点では v3.87  
[プロセスエクスプローラー](https://docs.microsoft.com/ja-
jp/sysinternals/downloads/process-explorer) 現時点では v 16.43  
[ProcDump](https://docs.microsoft.com/ja-jp/sysinternals/downloads/procdump)
現時点では v 10.11  
[PsList](https://docs.microsoft.com/ja-jp/sysinternals/downloads/pslist) 現時点では
v1.4

* * *

Q2.バッチファイルの処理が終わらない時、途中で強制終了する方法はありますか？  
A2.以下のような方法が考えられます。

  * キー入力が有効な場合、Ctrl+Cのキー入力で中断出来るかもしれません。メッセージが表示されて継続するか終了するか選べるでしょう。  
[バッチファイルの実行を強制終了する](https://jj-blues.com/cms/wantto-forcedstopbatfile/)

  * タスクバーやスタートメニューを右クリックすると表示されるタスクマネージャーで該当するプロセスを確認し、そのプロセスを右クリックして「タスクの終了」とか「プロセスツリーの終了」を選択すれば終了するでしょう。
  * [taskkill](https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/taskkill)コマンドで上記タスクマネージャーでの操作と同等のことが出来るでしょう。

* * *

Q3.エラー処理を追加できますか？  
A3.質問にある削除処理を更に別のバッチファイルにして、それの実行状態を監視するといった手法が考えられます。

例えばこちらはバッチではなく何かのexeを対象とした記事ですが、上記Q1で紹介したtasklistコマンドとかtimeoutコマンドが応用できるでしょう。

参照記事：  
[【バッチファイル】タイマーで処理が終わるのを待つ方法｜timeoutコマンド](https://nashiza-
blog.com/2020/06/13/bat-timeout/)  
[特定プロセスの存在を一定時間監視して強制終了するバッチ（Windows VISTA）](http://fc2hage.blog.fc2.com/blog-
entry-33.html)  
[Windowsバッチファイルでプロセスチェックを行う方法](https://itlogs.net/windows-bat-process-check/)

バッチファイルとして実行するプロセスに特定しやすくするための情報を付加する方法を解説しているらしき記事がこちら  
[How would I see if a certain Batch File is running and get the
PID?](https://superuser.com/q/1328809)


CC BY-SA 4.0
2022-02-01T01:43:53.163
86052
2022-02-01T01:43:53.163
26370
86014
answer