2013-10-04 72 views
0

我有3000多个供应商在文件夹结构中的情况。然后每个供应商每年都有文件夹(2001,... 2014)以及其他文件夹。有没有办法列出最近一年(无论哪一年)的所有文件。从上一年文件夹获取文件的Powershell脚本

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

回答

0

一个班轮

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

您从根文件夹开始,你所得到它的名字看起来像一个一年的所有文件夹的每个文件夹,对它们进行排序,占据第一位,并获得所有它的文件夹。

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

+0

的脚本不能正常工作,因为文件夹结构看起来像Y:\协议\ 0到C \ 0 \ 0供应商\协议\然后一堆年份文件夹。 另一个例子, \协议\ d至H。\ E \埃德蒙电力承包商LLC \协议\然后一年文件夹中的一堆 这将是这么多,我去深入每家供应商的文件夹,然后协议文件夹,运行shell命令3000次。 – torres

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 
相关问题