复制每个第n个文件并保留目录结构

时间:2018-03-07 16:32:22

标签: powershell

我需要将文件夹(包括子文件夹)中的每个第n个文件复制到另一个位置,但保留文件夹结构。

我找到了一些片段,但没有一个非常符合我的要求,要么将随机文件复制到一个文件夹,要么复制所有文件但保留文件夹结构。我最接近的就是这个。

$Source = "C:\source"
$Destination = "C:\destination"
$Skip = 10

$Files = Get-ChildItem -Recurse -Path $Source -File | ForEach-Object {$_.FullName }

for( $idx = 0; $idx -lt $Files.count; $idx += $Skip ) {
$Files[$idx] | Copy-Item -Destination $Destination -container -recurse
}

我觉得自己在正确的路径上获得了每个第n个文件,但是在目标文件夹中,所有文件都在根目录中,并且目录结构丢失了。我想他可能是因为每个for循环都没有与Copy-Item一起使用并剥离路径?

1 个答案:

答案 0 :(得分:0)

将您的循环更改为:

for( $idx = 0; $idx -lt $Files.count; $idx += $Skip ) {
    Copy-Item -Path $Files[$idx] -Destination ($Files[$idx]).Replace($Source,$Destination) -Force
}

这使用完整路径,用$Source替换$Destination部分。

-Force参数表示如果需要,将创建任何父文件夹。

不确定您的任务是否需要-Recurse-Container参数 - 如果需要,请将其添加回来。