我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'