使用Copy-Item或robocopy复制文件

时间:2019-04-11 09:09:08

标签: powershell scripting command-line-interface

我遇到以下问题。我有一个文件夹C:\ Users \ Username。在该文件夹中,您可以找到“文档”,“收藏夹”等文件夹。

我想做的是仅包含要复制的某些文件夹。

我当时正与Robocopy XD玩耍以排除某些文件夹,但这是不可接受的,因为我无法知道其中可能存在的所有文件夹。

然后我尝试了Get-ChildItem -include <some dir>。现在我只想复制列出的文件夹。但是robocopy仅复制文件夹的内容,而不复制文件夹本身。还有其他解决方案。

2 个答案:

答案 0 :(得分:3)

首先:别忘了在-recurse上使用Get-ChildItem来获取对象中的所有结构。
然后在robocopy

  • 您需要/s包含非空子目录,并且需要/e包含所有子目录
  • /b/purge在执行备份时很好用-大大提高了速度。不过要小心清除
  • /xd <Directory>[ ...]排除与指定名称和路径匹配的目录。 (或者您可以仅包含所需子目录的列表)

我使用类似这样的内容:

$source = 'C:\hold\first test'
$destination = 'C:\hold\second test'
$robocopyOptions = @('/NJH', '/NJS')
$fileList = 'test.txt'
Start robocopy -args "$source $destination $fileList $robocopyOptions"

log选项也挽救了我一生。

有关所有参数,请参见robocopy docs

答案 1 :(得分:0)

我刚刚发现您可以执行Copy-Item -Path $path"\Desktop" -Destination $newdir -Recurse,它将复制包含其内容的Desktop文件夹。