这是一个愚蠢的问题,但我只是不知道为什么它不起作用。
我正在尝试将文件从 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
请注意文件夹名称后面的星号 (*)。这会将文件夹的内容(包括子文件夹)复制到目标文件夹,但不会将文件夹本身复制到目标文件夹。
答案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