【问题标题】:Copying files with Copy-Item or robocopy使用 Copy-Item 或 robocopy 复制文件
【发布时间】:2019-09-01 20:49:42
【问题描述】:

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

我想要做的是只包括一些要复制的文件夹。

我正在使用 Robocopy XD 排除某些文件夹,但这是不可接受的,因为我无法知道可能存在的所有文件夹。

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

【问题讨论】:

    标签: powershell scripting command-line-interface


    【解决方案1】:

    我刚刚发现你可以使用Copy-Item -Path $path"\Desktop" -Destination $newdir -Recurse,它会复制 Desktop 文件夹及其内容。

    【讨论】:

      【解决方案2】:

      首先:不要忘记在Get-ChildItem 上使用-recurse 来抓取对象中的所有结构。
      然后在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

      【讨论】:

      • 感谢您的编辑!这是我第一次尝试回答问题 - 我会改进我的风格:)
      • 当涉及到Start robocopy -args "$source $destination $fileList $robocopyOptions" 时,一个 cmd 显示大约一毫秒,然后再次退出,但什么也没发生。也许这也是一个有用的信息,我在 powershell 脚本中使用它。
      • 您可以按照引用链接中的建议将-NoNewWindow -PassThru -Wait 用于窗口。但我更喜欢在每次运行时使用名称中带有时间戳的日志。
      • 我想我现在知道问题所在了。它只适用于文件而不是文件夹
      猜你喜欢
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-13
      • 2010-10-15
      • 2013-08-01
      • 2018-08-15
      • 2017-01-28
      相关资源
      最近更新 更多