![如何将多个文件夹和文件合并到一个新的文件夹?](https://linux22.com/image/1663610/%E5%A6%82%E4%BD%95%E5%B0%86%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E5%92%8C%E6%96%87%E4%BB%B6%E5%90%88%E5%B9%B6%E5%88%B0%E4%B8%80%E4%B8%AA%E6%96%B0%E7%9A%84%E6%96%87%E4%BB%B6%E5%A4%B9%EF%BC%9F.png)
我SCENERY
在驱动器F
( F:\SCENERY
) 上有一个名为的文件夹。它包含几个文件夹:A
、B
、C
... 等。我想合并A
、、 ... 等的内容复制到名为( )的驱动器上的另一个文件夹B
中。C
F
BASEFILES
F:\BASEFILES
这可能吗?
使用 PowerShell 脚本及输出:
PS C:\Windows\system32> (Get-ChildItem 'F:\Scenery\*' -Directory).FullName |
ForEach-Object { Join-Path $_ '*' } |
Copy-Item -Destination 'F:\BaseFiles' -WhatIf
What if: Performing the operation "Copy Directory" on target "Item: F:\Scenery\XP11_HD_Mesh_V4\XP11_HD_Mesh_V4_+60-020-Europe Destination: F:\BaseFiles\XP11_HD_Mesh_V4_+60-020-Europe".
What if: Performing the operation "Copy Directory" on target "Item: F:\Scenery\XP11_HD_Mesh_V4\XP11_HD_Mesh_V4_+70+020-Europe Destination: F:\BaseFiles\XP11_HD_Mesh_V4_+70+020-Europe".
PS C:\Windows\system32>
答案1
如果您想要的所有子文件夹F:\SCENERY
,则电源外壳会工作:
F:\BaseFiles
在运行此命令之前,应该创建目标文件夹。
(Get-ChildItem 'F:\Scenery\*' -Directory).FullName |
ForEach-Object { Join-Path $_ '*' } |
Copy-Item -Destination 'F:\BaseFiles' -Recurse
编辑:
不要逐行复制,这是一个单一的管道:
(Get-ChildItem 'F:\Scenery\*' -Directory).FullName | ForEach-Object { Join-Path $_ '*' } | Copy-Item -Destination 'F:\BaseFiles' -Recurse
- 为了验证会发生什么,请首先运行此版本:
(Get-ChildItem 'F:\Scenery\*' -Directory).FullName |
ForEach-Object { Join-Path $_ '*' } |
Copy-Item -Destination 'F:\BaseFiles' -Recurse -WhatIf
- 该
-WhatIf
参数预览操作但不执行该操作。
使用别名,第一个命令简化为:
(gci 'F:\Scenery\*' -ad).FullName |
% { Join-Path $_ '*' } |
Copy -s 'F:\BaseFiles'