按创建日期对文件排序

时间:2019-09-23 21:48:34

标签: powershell

有一个每天运行的报告(我们只能选择每天或每月),而我们只需要一周的一天就可以上传。我需要移动星期一创建的文件,并删除目录中的所有其他文件。

我能够在一个变量中获得创建时间,然后使用另一个变量来提取星期几。这仅适用于一个文件,因此我需要在该过程中添加foreach语句。

$FileDate = (Get-ChildItem "c:\temp\version.ps1").CreationTime
Write-Output $filedate

$day = (Get-Date $filedate).DayOfWeek

if ($day -eq "Monday") {
    Write-Output Correct file, copy to another directory
} else {
    Write-Host Delete file
}

该脚本仅适用于一个文件,不适用于整个目录。我需要做的是查看每个文件的创建日期,如果它是从星期一开始移动的,则删除所有其他文件。

2 个答案:

答案 0 :(得分:2)

使用 Toast.makeText(view.getContext(), "sorry", Toast.LENGTH_LONG).show(); 筛选在特定日期未创建的文件,然后移动它们并删除其余的文件。

Where-Object

在您确认仅将要删除的文件和将要删除的文件删除后,无需运行Get-ChildItem 'C:\temp' | Where-Object { $_.CreationTime.DayOfWeek -ne 'Monday' } | Move-Item -Destination 'C:\somewhere\else\' -WhatIf Remove-Item 'C:\temp\*.*' -WhatIf 即可重新运行(但是,已移动的文件也将报告为已删除,因为它们实际上还没有移动)。

答案 1 :(得分:0)

将结果插入foreach,以遍历检索到的每个文件,然后执行适当的操作:

Get-ChildItem c:\temp | foreach {

    $day = $_.CreationTime.DayOfWeek

    if ($day -eq "Monday") {
        Move-Item $_ $destination
    } else {
        Remove-Item $_
    }

}