将最新文件从文件夹复制到目标

时间:2016-01-19 19:33:40

标签: powershell

我需要一些PowerShell的帮助。我的经验非常有限,因为我是一个sql server dba。我目前正在做的是从2000年到2008年迁移数据库。我想从源到目标自动化.bak副本,所以我不需要进入每个文件夹并复制然后粘贴。那么让我来说明一下。源目录包含文件夹 a b c d 。我希望脚本从每个文件夹中读取,或者理想地指定文件夹名称并获取最新文件 .Bak按日期完整备份并复制到目的地。目的地将具有相同的文件夹,因此文件夹a的备份复制到目标文件夹 a 将会很棒。之后我想做同样的事情但是将我的搜索从完全备份搜索更改为差异。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

这就是我要解决的问题。文件夹路径和目标路径的变量是根文件夹,子文件夹的变量列出每个要搜索的文件夹。

Clear-Host
$ChildFolders = @('A', 'B')

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

    $FolderPath = "D:\BackupSource\" + $ChildFolders[$i]
    $DestinationPath = "D:\BackupDestination\" + $ChildFolders[$i]

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

}

答案 1 :(得分:0)

鉴于此结构,意味着所有文件夹都存在。

                 toDestinationFlights: toDestinationFlightsTemp, //This for whatever reason works fine
                 returnFlights: returnFlightsTemp
             })

             flightsToLoc.Flight.forEach(function(flightTo, i) {
                 toDestinationFlightsTemp.push(flightTo.DepartureAirport.LocationCode);
             })

             returnFlights.Flight.forEach(function(flightTo, i) {
             returnFlightsTemp.push(flightTo.DepartureAirport.LocationCode)
             })
         }
         toDestinationFlightsARIVALTemp = toDestinationFlightsTemp.concat(returnFlightsTemp[0]);
     }
     getAirportNameToLocation(trips)

     flightObjects;

您可以执行以下操作:

├───destination
│   ├───A
│   └───B
└───source
    ├───A
    └───B

它获取与您的过滤器匹配的所有文件,按LastWriteTime按降序排序,选择最新文件并将其复制到目的地。