有一个每天运行的报告(我们只能选择每天或每月),而我们只需要一周的一天就可以上传。我需要移动星期一创建的文件,并删除目录中的所有其他文件。
我能够在一个变量中获得创建时间,然后使用另一个变量来提取星期几。这仅适用于一个文件,因此我需要在该过程中添加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
}
该脚本仅适用于一个文件,不适用于整个目录。我需要做的是查看每个文件的创建日期,如果它是从星期一开始移动的,则删除所有其他文件。
答案 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 $_
}
}