我想复制一个文件夹,包含子目录中的子目录,文件和文件,保留结构并在以前不存在的新位置创建它们。这是我的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
的根级别。
我做错了什么?
答案 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.