我正在尝试将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。
你们有一些如何使此代码正常运行的提示吗? 预先感谢
答案 0 :(得分:0)
我只会使用robocopy,它是专门为此类任务而构建的,默认情况下包含在大多数现代Windows版本中:
robocopy C:\Source C:\Destination /Z /XA:H /W:5
/Z
-如果被中断,则恢复复制/XA:H
-忽略隐藏文件/W:5
-将等待失败的时间缩短到5秒(默认为30秒)值得一看的documentation,因为实际上您可以想到的每种情况都有很多不同的选择...
例如,添加/MIR
,当从源中删除文件时,它将从目标中删除所有文件。