powershell删除备份文件/存档位/ windows 2008 R2

时间:2012-02-06 16:45:48

标签: windows powershell attributes archive

我已经整理了一个脚本来删除备份文件,但我相信我的归档位属性很混乱。

$path = "D:\logs\"
$files = Get-ChildItem -Path $path -Recurse
$attribute = [io.fileattributes]::archive   #archive bit
$date = get-date -format d     # strip time out of date, date needed for Filename
$date = $date.replace('/','.') # strip out forward slashes and replac with . in date
$filename = "\ArchiveLog"+$date+".txt" # Filename for log file.
$location = $path+$filename 
cd D:\logs 

Foreach($file in $files)
{
 If((Get-ItemProperty -Path $file.fullname).attributes -band $attribute)
  { 
    add-content -path "$path" "$file.DirectoryName has been deleted"
    Remove-Item $file -force
  }
}

但是当我测试它时,此脚本会删除刚创建的全新文件,因为新创建的文件具有“A”属性或存档位。

当我查看其他示例脚本时,他们通常会使用该行,以确保设置文件存档位:

attribute = [io.fileattributes]::archive   #archive bit
If((Get-ItemProperty -Path $file.fullname).attributes -band $attribute)
{ 
log file name    
Remove file
}

所以...我想知道这是否是Windows 2008 r2的新功能,其中存档位“A”在创建时自动设置,或者我发现的其他脚本可能是错误的。

1 个答案:

答案 0 :(得分:1)

我认为你让它变得比它需要的更复杂。这是一个示例,我只返回设置了ARCHIVE属性的TXT文件:

PS C:> dir c:\ work * .txt |其中{$ _。attributes -match“Archive”} |选择名称 ,属性

如果您只想要比特定日期更新或更旧的文件,则可以根据需要添加其他过滤。