2016-05-04 11 views
0

x日より古いファイルを自動的に削除するスクリプトがあります。フォルダのタイムスタンプを調べ、ファイルではないPowerShell削除スクリプト

$dump_path = "C:\Backup\GroupPolicies" 
$max_days = "-7" 
$curr_date = Get-Date 
$del_date = $curr_date.AddDays($max_days) 
Get-ChildItem $dump_path -Recurse | Where-Object { $_.LastWriteTime -lt $del_date } | Remove-Item -Recurse -Force 

はしかし、私はそれがフォルダのタイムスタンプの代わりに、ファイルのタイムスタンプを探したいです。これを行う方法はありますか?私はどこでも検索しましたが、私が見るのはファイルのタイムスタンプだけです。

+0

スタックオーバーフローの-Directoryスイッチパラメータを使用することができます。あなたは何を試みましたか?あなたの質問にその試みを追加してください – lloyd

+0

「フォルダタイムスタンプを見てファイルを削除する」とはどういう意味ですか?どのフォルダですか?どのタイムスタンプ(作成、変更)ですか?あなたが「フォルダの作成日を見てフォルダとその内容を削除する」ということを想像していますか?もしそうなら、 'Get-ChildItem -Directory | ? CreationTime -lt $ del_date'はあなたにフォルダを取得し、それらを削除します。個々のファイルをチェックするのは面倒ではありません。それはあなたが意味するものではない場合は、さらに説明してください... – TessellatingHeckler

答えて

1

PowerShell 2.0に限られていた場合、これは少し効率が悪くなりますが、このようなことを行います。

Get-ChildItem $dump_path -Recurse | 
    Where-Object {$_.PSIsContainer -and $_.LastWriteTime -lt $del_date } | 
    Get-ChildItem -Recurse | 
    Remove-Item -Recurse -Confirm:$False -Force -WhatIf 

日付基準に一致するすべてのフォルダを取得します。次に、それらのフォルダのそれぞれについて、すべての子アイテムを取得します。これにはさらに多くのフォルダが含まれています。したがって、階層が複雑な場合、これは分離され、より複雑なロジックが必要になります。

-WhatIfを使用して、コードで確実にファイルを分離してください。


PowerShellを使用し、少なくとも3.0は、あなたは、コードの書き込みサービスではありませんGet-ChildItem

Get-ChildItem $dump_path -Recurse -Directory | 
    Where-Object {$_.LastWriteTime -lt $del_date } | 
    Get-ChildItem -Recurse | 
    Remove-Item -Recurse -Confirm:$False -Force -WhatIf 
関連する問題