我需要将文件夹(包括子文件夹)中的每个第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
一起使用并剥离路径?
答案 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
参数 - 如果需要,请将其添加回来。