通过PowerShell在14天以上的文件中添加存档位

问题描述 投票:1回答:2

我正在尝试设置一个PowerShell脚本,该脚本会将一个存档位添加到特定文件夹中超过+14天的所有文件,例如C:\Temp

这可以通过CMD实现,但如何设置仅将+a位添加到超过+14天的文件中?

attrib +A C:\temp\*.*
powershell
2个回答
1
投票

首先检查属性是否存在,然后根据条件设置。要切换存档位,可以使用按位独占或(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)
    }
}

希望能帮助到你。


-1
投票

只需过滤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'
}
© www.soinside.com 2019 - 2024. All rights reserved.