Windowsスケジュールタスク-.batは永久に実行されます


0

ハードドライブ上のフォルダーを自動的にクリーンアップするタスクをスケジュールしました。特定の日数より古いファイルを削除します。

基本的に.bat、次のような行でいっぱいのファイルを実行します。

FORFILES /P "D:\Folder1\SubFolder1" /D -30 /C "cmd /c del /F /Q @path"
FORFILES /P "D:\Folder1\SubFolder4" /D -30 /C "cmd /c del /F /Q @path"

私は、タスクがしばしば終了しないことに気付きました。理由はわかりません。.bat手動で実行およびフォルダが、その後クリーンアップされたときにファイルが数分で終わります。

その理由は、プロンプトが表示される場合があるためだと思います。

削除[...]よろしいですか?(Y / N):_

サブフォルダーの再帰的な削除のため。コマンドに追加/Fして/Q切り替えたことに注意してくださいdel

タスクYが表示されるプロンプトに自動的に応答することを確認するにはどうすればよいですか?または、これは私の問題を解決するためにとるべきパスではありません-私は私の.batファイルを改善すべきですか?


stdoutとstderrをログファイルに記録するスクリプトを取得できますか。
ctrl-alt-delor 14

@richardそれをタスクに追加することをお勧めします。今後数週間でこれらのファイルを監視し、結果をお知らせします。
マリオ14

方法:(forfiles / d -30 / c "cmd / c del / q @file")&&(forfiles / d -30 / c "cmd / c rd / q / s @file")
MAKZ 14

@MAKZいいえ、ディレクトリツリー自体は常に保持する必要があります。
マリオ14

回答:


2

あなたの問題は、forfilesがファイルとディレクトリの両方を見つけ、ファイルを削除することだけを探しているということです。

/ Cコマンドでこれを試してください:

「cmd / c if @ isdir == FALSE del @path」

これは、forfilesイテレータがディレクトリを指していない場合にのみdelコマンドを起動します。

少なくとも今のところは、-qを省略して、これで問題ないかどうかを確認します。しかし、正しいことをターゲットにした場合、確認の質問を口論する必要はないはずです。

また、読み取り専用ファイルを削除する場合にのみ/ fが必要です。必要だと確信している場合にのみ強制してください:)

幸運を祈ります。これが役立つことを願っています。


それはおそらく私の改善ですが.bat、ありがとうございますが、それがどのようにうまく動作しdel、フォルダへの試行に関するエラーが発生しないことをどのように説明しますか?
マリオ14

いずれにせよ、私は両方/F/Qスイッチを削除し、if @isdir==FALSEどこにでもチェックを含めました。タスクは正常に実行されましたが、現在はフォルダー内に多くのファイルがありません。近い将来に失敗した場合は報告します。
マリオDS 14

/ qスイッチがそれらを抑制するため、「エラー質問」を与えませんでした。今では、それらに遭遇しないので、エラーを与えません。なぜそれが実際に時々立ち往生したのか、私にはわかりません。
SadBunny 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.