Windows (具体的には Windows 7) で、3 時間ごとにすべてのフォルダー内の 24 時間以上経過したファイルをすべて削除するスケジュール プロセスを作成したいと考えています (Unix の find のように-mtime +1
)。基本的に、これは Unix cron でこれを構成するのと同等の Windows の機能です。
find $TRANSITDIR -mtime +1 -exec rm -rf {} \;
Windowsのcronに相当するものは、スケジューラただ、それを実行するための Windows コマンドが分からないのです。
すぐに使えるスケジューラ スクリプトを持っている人はいますか?
答え1
次の内容のバッチ ファイルを作成します。
REM Remove files older than 1 day
forfiles /p %1 /s /m * /c "cmd /c del @path /q" /d -1
次に、Windows タスク スケジューラを開きます。プログラムを実行するための基本タスクを作成し、引数としてフォルダーへのパスを引用符で囲んで指定します。
コマンドの説明
REM
コメントです。
forfiles
各ファイルに対してコマンドを実行します。/p %1
は、ファイルが存在するパスを定義します (%1
スクリプトに渡される最初のコマンド ライン引数の値を意味します)。/s
は再帰的です (サブフォルダーに移動します)。/m *.*
はファイル名マスクです。/c "cmd /c del @path"
実行するコマンドを指定します。 は、/d -1
1 日以上前のファイルを意味します。
この場合、はcmd /c del @pat /qh
新しいセッションを作成し、del
で (delete file)を実行します。@path
によって反復される各ファイルのファイルパスは、静かなモード用であるため、forfiles
/q
ディレクトリの確認を求めない。
テスト
del
を に置き換えますecho
。これにより、実際に削除されるのではなく、削除されるはずだった各ファイルが印刷されます。
答え2
あなたがまさにやりたいことではないかもしれませんが、Windows について話すときは、CCleaner の自動消去を考慮する価値があると思います。私は、Windows マシンの tmp ファイルを見つけて消去するためにこれを使用しています。
CLIは制限されているhttp://www.piriform.com/docs/ccleaner/advanced-usage/command-line-parameters#CCleaner のコマンドラインパラメータ
また、あなたがシェル ユーザーであり、W7 に必要だと言った場合は、PowerShell を試すことができます。
http://www.google.es/search?q=powershell+remove+x+day+older+files