以递归方式比较两个文件夹并保存重复的文件

时间:2013-07-22 17:54:36

标签: windows iis powershell deployment

我正在尝试做一些非常奇怪的事情。可以分析任何替代解决方案,但我工作的过程很难改变。

我有一个要在IIS Web服务器中部署的文件夹。此文件夹可以包含任何文件,如dll,asmx,web.config,.exe等。我们有一个bat脚本执行完整备份,但简单的文件部署可以持续一个小时,因此。

我想要一些实用程序或制作一个powershell脚本来比较要与目标文件夹一起部署的文件夹,并且只备份第一个文件夹中具有相同文件的文件(或文件夹)。这必须以递归方式完成,并且还必须保留目标服务器中的文件夹结构。

编辑:我目前正在开发一个类似这样的PowerShell脚本(我绝对不是PowerShell专家):

Compare-Object $d1 $d2 | Where-Object {$_.SideIndicator -ne "=>" -and $_.InputObject -ne "*.ok*" -and $_.InputObject -ne "*.bat*" }

任何帮助或建议将不胜感激! 此致

1 个答案:

答案 0 :(得分:0)

你将无法使用compare-object维护文件结构......我很无聊所以你去吧。

$sPath = "C:\test\"
$dPath = "C:\test2\"
$src = gci -recurse $sPath
$dest = gci -recurse $dPath
$src | % { 
    foreach($item in $dest) {
        $t1 =  ($item.FullName).trimStart($dpath)
        $t2 =  ($_.FullName).trimStart($sPath)
        if($t1 -eq $t2) {copy-item $item.FullName $_.FullName -Force}
    }
}

只需将$ spath设置为src目录,将$ dPath设置为部署目录,然后将其翻录。