0

我们的要求是将文件从源文件夹复制到目标文件夹。

该子句在脚本的第一次运行期间应复制所有内容,但在随后的运行中,它应仅复制那些尚未复制且是新文件的文件。

问题出在目标文件夹中,我们有一个脚本可以处理文件并在执行后将其删除。所以我们不希望将源中的重复文件复制到目标。

例子

source-> abc.txt,def.xt

1 次后

dest->abc.txt,def.txt

随后的运行

source->abc.txt,def.xt, ghi.txt

dest->abc.txt,def.xt, ghi.txt

现在,当另一个脚本在 dest 文件夹上运行并被删除时abc.txtghi.txt逻辑应该是

source->abc.txt,def.xt, ghi.txt,jkl.txt

现在,当脚本运行时,它应该只复制新文件

dest->ghi.txt, jkl.txt

我在想我们是否可以在脚本第一次运行后将输出记录到 txt 文件中,然后在将任何内容从源文件夹复制到目标之前设置条件以检查该日志文件是否存在文本文件。

希望能够解释。

谢谢

4

1 回答 1

0

您可以像这样复制那些不在您的历史记录中的文件:

$sourceFolder = "..."
$destFolder   = "..."
$historyFile  = "history.txt"

$recurse = $false

$history = Get-Content $historyFile

Get-ChildItem $sourceFolder -Recurse:$recurse | ? {
  -not $_.PSIsContainer -and $history -notcontains $_.FullName
} | % {
  Copy-Item $_.FullName $destFolder
  $_.FullName >> $historyFile
}

该行将$_.FullName >> $historyFile复制的文件附加到历史文件。

于 2013-03-21T15:00:11.277 回答