首页 > 解决方案 > 使用 Powershell 同步文件夹 - 新文件和编辑文件

问题描述

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

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

$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我在之后尝试过,Compare-Object但在运行代码时得到了 WriteErrorException。

你们有一些关于如何让这段代码正常运行的提示吗?提前致谢

标签: powershell

解决方案


我只是使用 robocopy,它是专门为这种类型的任务而构建的,并且默认包含在大多数现代版本的 windows 中:

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

值得看一下文档,因为您可以想到的几乎每种情况都有许多不同的选项...

例如,添加/MIR它会在从源中删除任何文件时从目标中删除它们。


推荐阅读