相对较新的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)
}
}
任何方向或帮助让我超越这一点将不胜感激。 感谢。