powershell遍历多个子文件夹以获得差异并移动到多个目标

时间:2015-06-03 22:23:39

标签: powershell copy diff

相对较新的PS。我正在尝试编写一个PS,它将使用相同的文件夹名称迭代多个源和目标子文件夹。对源和目标中的每个文件夹执行gci,执行差异并将差异从源复制到目标。我有一个脚本适用于单个子文件夹。

#############  source  #############
$s = "C:\LogBackup\ConversionExpress\"
$src_conexp = [string[]](gci $s -recurse -include *.safe, *.done) #test location


############  target  #############
$t = "C:\LogBackup\ConversionExpress2\"   #TST
$trg_conexp = [string[]](gci $t -recurse -include *.safe, *.done)  #TST


diff -ReferenceObject ($src_conexp) -DifferenceObject ($trg_conexp) -Passthru |
   %  {
       cpi -path $_ -Destination $t -Force
     }

我的问题是,我在源和目标中有6个子文件夹,我需要对其进行差异处理,并将生成的差异复制到相应的目标文件位置。

这是我丑陋的R& D带给我的地方:

#$pfolder = "C:\LogBackup\" 
$sfolders = $(gci "C:\LogBackup\");
$tfolders = $(gci "C:\LogBackup2\");


foreach ($s in $sfolders) 
{ 
   $sfile = (gci "C:\LogBackup\$_" -r -include *.safe, *.done);   
}
foreach ($t in $tfolders)
{
   $tfile = (gci "C:\LogBackup2\$_" -r -include *.safe, *.done);  


    diff -ReferenceObject ($sfile) -DifferenceObject ($tfile) -Passthru |
                             %  {
                                    cpi -path $_ -Destination $t -Force
                                }

 }           

我想知道我是否可以获得这个功能,我发现它也能正常工作。

Function GetFiles($folder)
{ 
   Write-Host "+"$folder.Name
   foreach($file in $folder.Files)
   {
       Write-Host "`t" $file.Name
   }

   # Use recursion to loop through all subfolders.
   foreach ($subFolder in $folder.SubFolders)
   {
       Write-Host "`t" -NoNewline
       GetFiles($Subfolder)
   }
 }

任何方向或帮助让我超越这一点将不胜感激。 感谢。

0 个答案:

没有答案