ここ数日、かなり簡単だと思っていたスクリプトに取り組んでいましたが、そうではないようで、その理由がわかりました。私の問題は、それをどのように回避するかです。
私が説明する必要があるバッチ スクリプト:
膨大な量のファイルをある場所から別の場所に移動するなど、さまざまなことを行う cmd.exe で実行されるスクリプトがあります。と呼びましょう
movefile.cmd
。このスクリプトは機能しますが、時々停止することがあります (非常にまれです - 理由とそのスクリプトには立ち入らないでください)。このスクリプトは常に実行することが重要であるため、cmd.exe を終了し、約 1 時間ごとにスクリプトを再度開くバッチを作成することを考えました。このスクリプトを呼び出しましょうrestartcmd.bat
私がこれを行うことができるので、完全に簡単に聞こえます:
@echo off
:loop
start c:\script\movefile.cmd
Timeout /nobreak /t 3600
Taskkill cmd.exe
goto loop
しかし、私の新しいスクリプトも cmd.exe で実行されるため、明らかにこれは機能しません。したがって、このプロセスも強制終了されます。
私が試したこと:
そこで、cmd.exe のコピーを作成し、名前を dontkillthis.exe に変更しました。dontkillthis.exe を実行してから、dontkillthis.exe から restardcmd.bat を開きます。これは完全に機能します。しかし、それを行う代わりに、スクリプトをダブルクリックできるようにする必要があります。なんで?できるだけ簡単にする必要があり、restartcmd.bat をスタートアップ フォルダーに入れたいからです。
私は cmd.exe の正確なプロセス ID を取得し、それを閉じて dontkillthis.exe が残るようにするというアイデアを見てきましたが、それを釘付けにすることはできません。現在実行中のバッチファイルを除くすべてのバッチファイルを強制終了する方法について、ここに書かれているすべてのことを試しましたが、動作しません。
混乱しているのか、それとも実際にこれを行うのが少し難しいのかはわかりません。
ここで助けていただければ幸いです。
よろしくお願いします
モ