powershell - 使用 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。
你们有一些关于如何让这段代码正常运行的提示吗?提前致谢
解决方案
我只是使用 robocopy,它是专门为这种类型的任务而构建的,并且默认包含在大多数现代版本的 windows 中:
robocopy C:\Source C:\Destination /Z /XA:H /W:5
/Z
- 如果中断则继续复制/XA:H
- 忽略隐藏文件/W:5
- 将等待失败的时间缩短到 5 秒(默认 30)
值得看一下文档,因为您可以想到的几乎每种情况都有许多不同的选项...
例如,添加/MIR
它会在从源中删除任何文件时从目标中删除它们。
推荐阅读
- python - Pandas:如何仅删除列末尾的最后一个连字符
- google-forms - 如何根据其他用户过去的回复使 Google 表单自动填充?
- c - 我知道一个地址,但我应该如何判断在哪个部分?使用C的全局区域或堆区域或堆栈区域
- json - 如何解决“手势 RangeError(索引)捕获的异常:无效值:有效值范围为空:0”
- c++ - 什么会使多边形算法中的点仅在正向和反向运行时才能正常工作?
- php - PHP:如何使用键->值对每两个分隔符将一个字符串分解为一个数组
- kubernetes - 将 GKE 集群拆除为“全新”状态而不删除它?
- scala - Spark——自定义reduce函数保存到磁盘然后上传到s3
- javascript - XMLHttpRequest 返回事件对象而不是实际数据
- fortran - Fortran 将未知大小的文件读入数组