【发布时间】:2012-06-02 09:47:33
【问题描述】:
我有两个目录(dirA 和dirB),我想将所有文件从dirA 包括子文件夹复制到dirB dirA 中的一个文件仅当两个文件具有相同的名称(以及相同的子路径)和fileB.LastWriteTime < fileA.LastWriteTime,或者dirA 中的文件不存在于dirB 中时,才会替换dirB 中的文件。
所以,如果我有这些目录:
<directory Name="dirA">
<file Name="file1" LastWriteTime="10:00" />
<file Name="file2" LastWriteTime="11:00" />
<file Name="file7" LastWriteTime="12:00" />
<directory Name="subDir">
<file Name="file3" LastWriteTime="10:00" />
<file Name="file4" LastWriteTime="11:00" />
</directory>
<directory Name="subDir2">
<file Name="file5" LastWriteTime="10:00" />
<file Name="file6" LastWriteTime="11:00" />
</directory>
</directory>
<directory Name="dirB">
<file Name="file1" LastWriteTime="09:00" />
<file Name="file2" LastWriteTime="13:00" />
<directory Name="subDir">
<file Name="file3" LastWriteTime="09:00" />
<file Name="file4" LastWriteTime="12:00" />
</directory>
<directory Name="BsubDir2">
<file Name="file5" LastWriteTime="09:00" />
</directory>
</directory>
更新后dirB将是:
<directory Name="dirB">
<file Name="file1" LastWriteTime="10:00" />
<file Name="file2" LastWriteTime="13:00" />
<file Name="file7" LastWriteTime="12:00" />
<directory Name="subDir">
<file Name="file3" LastWriteTime="10:00" />
<file Name="file4" LastWriteTime="12:00" />
</directory>
<directory Name="BsubDir2">
<file Name="file5" LastWriteTime="09:00" />
</directory>
<directory Name="subDir2">
<file Name="file5" LastWriteTime="10:00" />
<file Name="file6" LastWriteTime="11:00" />
</directory>
</directory>
谢谢。
【问题讨论】:
-
我试过this
-
ROBOCOPY source dest /XO,好吧我知道不是编程解决方案,但有时为什么要重新发明轮子? -
@Steve 因为我的车轮有不同的轮辋,我需要一个编程解决方案。
-
现在认真,看看你的代码,我可以说你可以使用 File.Exist 和 Directory.Exist 进行很好的优化,以避免 dest 上的循环来查找 dir/file 的存在
标签: .net filesystems directory copy updates