Powershell脚本从去年文件夹中获取文件

时间:2013-10-04 14:35:23

标签: powershell filesystems

我的情况是我在文件夹结构中有3000个供应商。然后每个供应商每年都有文件夹(2001,...... 2014)和其他文件夹。有没有办法列出最近一年(无论哪一年)的所有文件。

基本上,我需要将所有最新的协议文件从文件共享上传到SharePoint。

2 个答案:

答案 0 :(得分:0)

One Liner

Get-ChildItem | %{ $_.FullName | Get-ChildItem [1-9][0-9][0-9][0-9] | sort -Descending | Select-Object -First 1 | Get-ChildItem }

您从根文件夹开始,对于每个文件夹,您获得名称看起来像一年的所有文件夹,对它们进行排序,获取第一个文件夹,并获取所有文件夹。

当然,这有很多问题。例如必须有至少一年的文件夹,没有'年'文件等。我会留下你解决这类问题。

答案 1 :(得分:0)

首先,我会递归遍历所有目录,匹配与当前年份相同的目录:

$thisYearDirs = get-childitem -Directory -Recurse | where {$_.Name -eq (get-date).year}

然后你会得到每个文件中的文件:

$thisYearDirs | get-childitem

您也可以在一行中完成所有操作:

get-childitem -Directory -Recurse | where {$_.Name -eq (get-date).year} | get-childitem

请注意,-directory开关需要powershell v3,您可以通过修改where子句条件来过滤掉早期版本中的目录:

get-childitem -Recurse | where {$_.PSIsCOntainer -and $_.Name -eq (get-date).year} | get-childitem