Powershell 递归复制项目但不包含文件夹名称

Powershell 递归复制项目但不包含文件夹名称

这是一个愚蠢的问题,但我只是不知道为什么它不起作用。

我正在尝试将文件从 FolderA 递归复制到 FolderB。我正在这样做:

Copy-Item -Path "C:\FolderA\" -Destination "C:\FolderB\" -recurse -Force -Verbose

运行良好,没有问题。

但 FolderB 中的结果是这样的:

C:\FolderB\FolderA\file.txt

而我希望它是:

C:\FolderB\file.txt

我忽略了什么明显愚蠢的事情?

答案1

您的命令告诉 PowerShell 将文件夹本身及其所有内容复制到目标文件夹。要仅复制原始文件夹的内容,请按如下方式更改路径:

Copy-Item -Path "C:\FolderA\*" -Destination "C:\FolderB\" -recurse -Force -Verbose

请注意文件夹名称后面的星号 (*)。这会将文件夹的内容(包括子文件夹)复制到目标文件夹,但不会将文件夹本身复制到目标文件夹。

使用 Copy-Item Cmdlet

答案2

您可以使用-File -Recurse递归方式仅复制文件:

Copy-Item -Path "C:\Source" -Destination "C:\Dest" -File -recurse -Force -Verbose

或者-Directory -Recurse仅用于复制空文件夹结构:

Copy-Item -Path "C:\Source" -Destination "C:\Dest" -Directory -recurse -Force -Verbose

答案3

设置-Container:$false将省略目录结构:

Copy-Item -Path C:\temp\tree -Filter *.txt -Recurse -Container:$false

文档:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/copy-item?view=powershell-7.1#example-12--recursively-copy-files-from-a-folder-tree-into-the-current-folder

相关内容