使用PowerShell,我得到了一个要求,从过去7年的所有历史文件存档压缩的基础上,月和年的创建日期和压缩后删除文件。
实现解决方案后,我应该看到如下所示的文件示例:
FolderName_2013-Jan.zip
FOlderName_2013-Feb.zip
FOlderName_2013-Mar.zip
FOlderName_2013-Jan.zip
FOlderName_2017-Jan.zip
FOlderName_2017-Dec.zip
我已经找到了几篇文章,但他们缺乏信息,以动态地通过每月月初和月底(例如:2013年1月1日至2013年1月31日或2015年6月1日至2015年6月30日),以过滤2013年以后所有月份的文件。
任何帮助都将不胜感激。
4条答案
按热度按时间pjngdqdw1#
到目前为止,您是否尝试过任何操作?请按照以下步骤操作...
Get-ChildItem
和Select-Object -Unique
获取唯一的创建日期ForEach
使用Where-Object
日期筛选文件,并将其通过管道传输到Compress-Archive
尝试它在您的水平最好的,仍然不能弄清楚,然后参考这个gist
wljmcqd82#
}
$根文件目录=“C:\临时\提取存档\”
$目录=获取子项路径$根文件目录递归目录|选择全名
ForEach($个目录中的$个目录){
}
aiqt4smr3#
使用上面Kiran建议的
Get-ChildItem
命令,您可以生成FileInfo和DirectoryInfo对象。每个对象都有文件和/或目录的时间戳,存储在不同的属性中,如LastWriteTime
、LastAccessTime
、CreationTime
。每个属性都包含[DateTime]
类型的数据。一旦您为每个文件/文件夹都有了[DateTime]
项,你可以这样做:您可能需要调整循环以获得正确的时间窗口,但基本思想应该在那里为您。
祝你好运
bweufnob4#
我使用下面的脚本来删除旧文件和超过给定日期的zip文件。
在我的情况下,我希望删除超过3个月的和归档文件。
我每个月运行一次,在月初,只保存最近3个月的文件,到下个月,最旧的一个月的文件就被删除了。
注意,在我的脚本中,我删除了旧的
*.gz
文件,但是压缩(归档)了旧的XML
文件。