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
}
该脚本仅适用于一个文件,而不适用于整个目录。我需要做的是查看每个文件的创建日期,如果它是从星期一开始,则将其移动并删除所有其他文件。
解决方案
用于Where-Object
过滤不是在特定日期创建的文件,然后移动它们并删除其余文件。
Get-ChildItem 'C:\temp' | Where-Object {
$_.CreationTime.DayOfWeek -ne 'Monday'
} | Move-Item -Destination 'C:\somewhere\else\' -WhatIf
Remove-Item 'C:\temp\*.*' -WhatIf
在您验证只有您想要的文件将被移动并且只有您想要删除的文件将被删除后重新运行而不使用-WhatIf
开关(移动的文件也将被报告为已删除,因为它们实际上还没有被移动)。
推荐阅读
- javascript - 如何使用事件模拟完整的用户输入
- asp.net - 获取实体视图中的数据
- amazon-web-services - 基于相同的任务定义但使用不同的环境变量运行多个 ECS 任务
- android - Paypal 与 Android 应用程序的集成 - 接收方
- c++ - 从另一个线程打开对话框
- python - Python Matlibplot DateFormat X 标签不可见
- syslog-ng - 配置 syslog-ng 服务器以截断中继到多个目的地中仅一个目的地的消息
- c# - 有没有办法从一个从列表中获取 Enum 元素的变量中提取 Enum number(int) ?
- python - Python os.remove - 目录中没有这样的文件
- objective-c - 是什么导致了这个 IndexOutOfBoudeException?