将文件夹与Powershell同步-新文件和已编辑文件

时间:2019-03-28 14:16:15

标签: powershell

我正在尝试将2个文件夹与Powershell同步。 比较和复制任何新文件都可以。但我想另外复制在参考Foler中修改过的所有文件。

以下代码可以工作并复制在参考文件夹中创建的所有新文件。

WITH 
    ddiWithRowNumber AS
    (
        SELECT
            InboundCallsView.*, 
            rn = ROW_NUMBER() OVER
            (
                PARTITION BY ddi
                ORDER BY ddi, StartTime DESC
            )
        FROM InboundCallsView
    )
SELECT *
FROM ddiWithRowNumber
WHERE rn = 1

现在,我也想复制修改后的文件。 我在$folderReference = 'C:\Users\Administrator\Desktop\TestA' $folderToSync = 'C:\Users\Administrator\Desktop\TestB' $referenceFiles = Get-ChildItem -Recurse -Path $folderReference $FolderSyncFiles = Get-ChildItem -recurse -Path $folderToSync $fileDiffs = Compare-Object -ReferenceObject $referenceFiles -DifferenceObject $FolderSyncFiles foreach ($File in $fileDiffs){ try { if ($File.SideIndicator -eq "<="){ $FullSourceObject = $File.InputObject.Fullname $FullTargetObject = $File.InputObject.Fullname.Replace($folderreference, $folderToSync) Write-Host "copy File: " $FullSourceObject copy-Item -Path $FullSourceObject -Destination $FullTargetObject } } catch { Write-Error -Message "Something went wrong!" -ErrorAction Stop } } 之后尝试了-property LastWriteTime,但是在运行代码时遇到了WriteErrorException。

你们有一些如何使此代码正常运行的提示吗? 预先感谢

1 个答案:

答案 0 :(得分:0)

我只会使用robocopy,它是专门为此类任务而构建的,默认情况下包含在大多数现代Windows版本中:

robocopy C:\Source C:\Destination /Z /XA:H /W:5
  • /Z-如果被中断,则恢复复制
  • /XA:H-忽略隐藏文件
  • /W:5-将等待失败的时间缩短到5秒(默认为30秒)

值得一看的documentation,因为实际上您可以想到的每种情况都有很多不同的选择...

例如,添加/MIR,当从源中删除文件时,它将从目标中删除所有文件。