我们有两个文件夹:
FolderA
:D:\Powershell\原始版本FolderB
:D:\Powershell\副本
现在,我想让FolderA
和FolderB
保持同步(即,当用户在FolderA
中更改/添加/删除文件/目录时,同样的更改应该发生在FolderB
中)。
我试探着:
$Date = Get-Date
$Date2Str = $Date.ToString("yyyMMdd")
$Files = gci "D:\Powershell\Original"
ForEach ($File in $Files){
$FileDate = $File.LastWriteTime
$CTDate2Str = $FileDate.ToString("yyyyMMdd")
if ($CTDate2Str -eq $Date2Str) {
copy-item "D:\Powershell\Original" "D:\Powershell\copy" -recurse
-ErrorVariable capturedErrors -ErrorAction SilentlyContinue;
}
}
但是,这将需要一个类似的powershell脚本来删除FolderA
中的文件和更改FolderB
中的文件。
4条答案
按热度按时间kqlmhetl1#
我认为您应该尝试以下方法,它可以根据您的要求更改syncMode。1是单向同步源到目标,2是双向同步
c7rzv4ha2#
除了前面的答案,这篇关于比较文件的方法的文章可能也会有帮助。实际上,按内容比较文件需要一个额外的步骤。(如散列)。此方法的详细说明写在这里:https://mcpmag.com/articles/2016/04/14/contents-of-two-folders-with-powershell.aspx
dy2hfwbg3#
这是一个完整的CLI,用于保持一种同步方式
ljsrvy3e4#
你看过Robocopy(鲁棒的文件复制)吗?它可以与PS一起使用,并提供你所寻找的iidoEe。它是专为文件夹的可靠复制或镜像(更改/添加/删除)而设计的,只需根据需要选择选项。
Robocopy sourceFolder destinationFolder /MIR /FFT /Z /XA:H /W:5
/MIR
选项镜像源目录和目标目录。如果在源目录中删除了文件,它将删除目标目录中的文件。Robocopy