我正在尝试设置一个PowerShell脚本,该脚本会将一个存档位添加到特定文件夹中超过+14天的所有文件,例如C:\Temp
。
这可以通过CMD实现,但如何设置仅将+a
位添加到超过+14天的文件中?
attrib +A C:\temp\*.*
首先检查属性是否存在,然后根据条件设置。要切换存档位,可以使用按位独占或(BXOR)运算符。
你可以这样做:
$path = "C:\foldername"
$files = Get-ChildItem -Path "C:\folderpath" -Recurse -force | where {($_.LastwriteTime -lt (Get-Date).AddDays(-14) ) -and (! $_.PSIsContainer)}
$attrib = [io.fileattributes]::archive
Foreach($file in $files)
{
If((Get-ItemProperty -Path $file.fullname).attributes -band $attrib)
{
"Attribute is present"
}
else
{
Set-ItemProperty -Path $file.fullname -Name attributes -Value ((Get-ItemProperty $file.fullname).attributes -BXOR $attrib)
}
}
希望能帮助到你。
只需过滤14天以上的文件,并将“存档”添加到其属性中:
$threshold = (Get-Date).Date.AddDays(-14)
Get-ChildItem 'C:\Temp' | Where-Object {
-not $_.PSIsContainer -and
$_.LastWriteTime -lt $threshold -and
-not ($_.Attributes -band [IO.FileAttributes]::Archive)
} | ForEach-Object {
$_.Attributes += 'Archive'
}