将文件夹结构复制到不存在的位置

时间:2016-07-13 15:25:01

标签: powershell

我想复制一个文件夹,包含子目录中的子目录,文件和文件,保留结构并在以前不存在的新位置创建它们。这是我的PowerShell代码

Copy-Item c:\development\powershell\folderone\* c:\development\powershell\foldertwo -recurse -Container 
Copy-Item c:\development\powershell\folderone\* c:\development\powershell\folderthree -recurse -Container

foldertwo存在且为空,folderthree不存在。

如果我运行脚本,则会在foldertwo中正确创建结构,但会创建folderthree,但只包含整个子结构中的所有文件,所有文件都位于根folderthree水平。它没有在folderone中重新创建子文件夹,只是将所有文件放在folderthree的根级别。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

这是一个非常基本但完全正常运行且经过测试的示例,基于您上面的确认,我理解了手头的问题:

$folderlist = ("foldertwo", "folderthree")
foreach ($folder in $folderlist)
{
    if (!(Test-Path "C:\Development\PowerShell\$folder"))
    {
        mkdir ("C:\Development\PowerShell\$folder") | Out-Null
    }
    Copy-Item c:\development\powershell\folderone\* c:\development\powershell\$folder -recurse -Container
}

答案 1 :(得分:2)

据我所知,问题是关于从[source]到[destination]重建文件夹结构。由于使用CmdLets是一种过度杀伤(和性能损失),我建议简单的批处理命令,也可以在powershell中运行。

xcopy [source] [destination] /T /E

xcopy是复制文件和目录树的函数。 帮助向我们提供了有关案例的usefult参数的信息:

/T创建目录结构,但不复制文件。才不是               包括空目录或子目录。 / T / E包括

/E复制目录和子目录,包括空目录。              与/ S / E相同。可用于修改/ T.