【问题标题】:PowerShell script trying to copy folders that do not existPowerShell 脚本试图复制不存在的文件夹
【发布时间】:2020-07-07 15:57:25
【问题描述】:

我正在尝试使用 PowerShell 脚本将“文档”文件夹复制到我的 OneDrive,但出现错误。它试图复制文件夹“我的图片”、“我的音乐”和“我的视频”,假设它们位于“文档”文件夹中,但那里没有这样的文件夹(它正在正常复制其他文件夹和文件)。我正在使用 Windows 10。

我使用的命令:

 Copy-Item "$env:USERPROFILE\Documents" -Destination "$env:USERPROFILE\OneDrive" -Recurse -Force

【问题讨论】:

    标签: windows powershell


    【解决方案1】:

    这些文件夹存在。您可以使用Get-ChildItem -Path $env:USERPROFILE\Documents -Force 查看它们。输出(摘录):

    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d--hsl       16.05.2020     14:32                My Music
    d--hsl       16.05.2020     14:32                My Pictures
    d--hsl       16.05.2020     14:32                My Videos
    

    如您所见,它们是指向目录的隐藏系统符号链接。您不能告诉Copy-Item 忽略它们,但您可以使用robocopy 来做到这一点:

    robocopy $env:USERPROFILE\Documents $env:USERPROFILE\OneDrive /e /xj
    
    • /e 等同于 -Recurse(到深拷贝)
    • /xj 将排除连接(又名符号链接)

    Read more about robocopy.

    【讨论】:

    • 你应该可以使用-Exclude @("My Games", "My Music", "My Pictures", "My Videos")排除那些符号链接
    • @JonathonAnderson 它不会,因为-Exclude/-Include 过滤器是在对象已经被获取之后应用的(顺便说一句效率很低)。所以在应用-Exclude/-Include过滤器之前会出现访问错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多