PowerShell从每个文件夹

时间:2017-10-04 15:32:52

标签: powershell

我需要PowerShell的一些帮助 - 我想在特定文件夹的所有子文件夹中搜索,并且每天上午9点将每个子文件夹中的最新文件复制到新文件夹。因此,我想在文件夹A的子文件夹a,b和c中搜索,以便在a,b和c中选择最新文件,并将所有三个文件移动到外部文件夹B(单个文件夹)中。我是PowerShell的新手 - 感谢任何帮助。我基本上尝试过使用此功能,但会创建备份:Copy most recent file from folder to destination

Clear-Host
$ChildFolders = @('In_a', 'In_b', 'In_c')

for($i = 0; $i -lt $ChildFolders.Count; $i++){

$FolderPath = "C:\FolderA\" + $ChildFolders[$i]
$DestinationPath = "C:\FolderB\" [$i]

gci -Path $FolderPath -File | Sort-Object -Property LastWriteTime -Descending | Select FullName -First 1 | %($_){ 
$_.FullName
Copy-Item $_.FullName -Destination $DestinationPath 
}

1 个答案:

答案 0 :(得分:0)

  

获取子文件夹

     

获取子文件夹中的所有文件

     

按创建日期将文件排序到数组

     

获取第一个条目

     

将文件移至目标目录

*它将覆盖目标文件夹中具有相同名称的文件

Function Get-LatestFiles($SourceFolder,$Destination){
    $Subfolders = Get-ChildItem $SourceFolder -Directory
    [System.Collections.ArrayList]$SubFoldersExpanded = new-object System.Collections.ArrayList
    Foreach($SubFolder in $SubFolders){
        $SubFolderExpanded =  $Subfolder | %{(Get-ChildItem $_.FullName -File -Depth 1 | Sort-Object -Property CreationTime -Descending)}
        if($SubFolderExpanded.Count -gt 0){
            $SubFolderExpanded[0] | %{Move-Item $_.FullName -Destination $Destination -force}
        }
    }
}
Get-LatestFiles -SourceFolder C:\test -Destination C:\test01