Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与Powershell同步文件夹-新建和编辑的文件_Powershell - Fatal编程技术网

与Powershell同步文件夹-新建和编辑的文件

与Powershell同步文件夹-新建和编辑的文件,powershell,Powershell,我正在尝试与Powershell同步2个文件夹。 比较和复制任何新文件都可以正常工作。但是我想另外复制在引用文件夹中修改的所有文件 下面的代码工作并复制在引用文件夹中创建的所有新文件 $folderReference = 'C:\Users\Administrator\Desktop\TestA' $folderToSync = 'C:\Users\Administrator\Desktop\TestB' $referenceFiles = Get-ChildItem -Recurse -Pa

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

下面的代码工作并复制在引用文件夹中创建的所有新文件

$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
    }
}
$folderReference='C:\Users\Administrator\Desktop\TestA'
$folderToSync='C:\Users\Administrator\Desktop\TestB'
$referenceFiles=Get ChildItem-Recurse-Path$folderReference
$FolderSyncFiles=Get ChildItem-recurse-Path$folderToSync
$FileDiff=比较对象-引用对象$referenceFiles-差异对象$FolderSyncFiles
foreach($filediff中的文件){
试一试{

如果($File.SideIndicator-eq“我只想使用robocopy,它是专门为这类任务构建的,默认情况下包含在大多数现代版本的windows中:

robocopy C:\Source C:\Destination /Z /XA:H /W:5
  • /Z
    -如果中断,则继续复制
  • /XA:H
    -忽略隐藏文件
  • /W:5
    -将故障等待时间缩短为5秒(默认为30秒)
值得一看的是,对于你能想到的每一种情况,都有许多不同的选择


例如,添加
/MIR
,当从源代码中删除目标文件时,它将从目标文件中删除这些文件。

我会使用robocopy,它是专门为这种类型的任务+1为robocopy构建的。你能分享你得到的错误消息吗?可能会在捕获中放入
throw$\ucode>,看看错误是什么,但这只会复制ev从源到目标的任何东西。我的目标是只复制源文件夹中新的或修改过的文件。这也可能吗?不可能,如果源/目标相同,Robocopy不会复制文件。谢谢。我的工作方式比我想象的要简单!