如何将多个文件夹和文件合并到一个新的文件夹?

如何将多个文件夹和文件合并到一个新的文件夹?

SCENERY在驱动器F( F:\SCENERY) 上有一个名为的文件夹。它包含几个文件夹:ABC... 等。我想合并A、、 ... 等的内容复制到名为( )的驱动器上的另一个文件夹B中。CFBASEFILESF:\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'

相关内容