如何在PowerShell中将文件属性与整个数组进行匹配

时间:2011-11-30 19:33:28

标签: arrays shell powershell

我有疑问和问题。

我有600,000个FLV文件列表,这是我想要保留的视频 我有一个500万FLV文件的文件夹,我想删除我不需要的440万左右。

我一直在玩这个问题好几个小时但是因为数组是不可变的而无法找到任何容易的东西。

我在考虑这样做:
在600万个文件夹列表中的foreach文件,检查name属性是否与我要保留的文件数组中的任何项匹配(使用import-csv)并且日期是否超过30天。

日期部分很简单,但我不确定如何将名称与数组进行比较。它真的像引用整个阵列一样容易吗?我不确定powershell会做什么。我将继续尝试这样做,但我将感谢任何人的帮助/意见,如何做到这一点或更好的选择。

2 个答案:

答案 0 :(得分:1)

你能不能移动你想要保留的所有文件。

迭代数组中的所有文件,如果数据正常,请将文件移动到“keep”文件夹。删除其余部分,然后将文件从“keep”文件夹中移回。

首先做“干跑”可能会很好。

答案 1 :(得分:1)

使用PowerShell,如果你有一个文件,文件名保存在C:\ MyPath \ MyFile.txt,文件位于C:\ FLVLocation \就像这样可以。

$keep = Get-Content C:\MyPath\MyFile.txt
Get-ChildItem C:\FLVLocation| 
    where{$keep -notcontains $_.Name -and $_.CreationTime -lt [DateTime]::Now.Date.AddDays(-30)}| 
    Remove-Item

但请先测试一下。