我有3000多個供應商在文件夾結構中的情況。然後每個供應商每年都有文件夾(2001,... 2014)以及其他文件夾。有沒有辦法列出最近一年(無論哪一年)的所有文件。從上一年文件夾獲取文件的Powershell腳本
基本上,我需要將所有最新的協議文件從文件共享上傳到SharePoint。
我有3000多個供應商在文件夾結構中的情況。然後每個供應商每年都有文件夾(2001,... 2014)以及其他文件夾。有沒有辦法列出最近一年(無論哪一年)的所有文件。從上一年文件夾獲取文件的Powershell腳本
基本上,我需要將所有最新的協議文件從文件共享上傳到SharePoint。
一個班輪
Get-ChildItem | %{ $_.FullName | Get-ChildItem [1-9][0-9][0-9][0-9] | sort -Descending | Select-Object -First 1 | Get-ChildItem }
您從根文件夾開始,你所得到它的名字看起來像一個一年的所有文件夾的每個文件夾,對它們進行排序,佔據第一位,並獲得所有它的文件夾。
當然,這有很多問題。例如必須至少有一年的文件夾,沒有「年」文件等。我會讓你解決這類問題。
首先,我會遞歸遍歷所有的目錄遍歷,匹配相當於當年的那些:
$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
的腳本不能正常工作,因爲文件夾結構看起來像Y:\協議\ 0到C \ 0 \ 0供應商\協議\然後一堆年份文件夾。 另一個例子, \協議\ d至H。\ E \埃德蒙電力承包商LLC \協議\然後一年文件夾中的一堆 這將是這麼多,我去深入每家供應商的文件夾,然後協議文件夾,運行shell命令3000次。 – torres