【问题标题】:Is it possible to copy only few files from source directory using Copy-Item?是否可以使用 Copy-Item 从源目录中仅复制几个文件?
【发布时间】:2021-03-07 05:30:17
【问题描述】:

我是 powershell 新手,仍在学习。我将文件从本地目录复制到远程服务器目录。它工作正常,但正在寻找一个选项,只复制几个文件,比如 5 从共享路径复制到远程(源目录有数千个文件,我的测试不需要它们全部)

Copy-Item -Path "C:\source\Documents\" -Destination "C:\Program Files\target" -ToSession $session

如何限制要复制的文件数量? 谢谢

【问题讨论】:

  • 这和c#有什么关系?哪5个文件?你有一个规则,还是文件系统给你的前 5 个?请记住,在 Powershell 中,管道很重要。因此,您找到一个列出文件的命令,将输出传递给选择所需 5 的命令,然后将输出传递给复制命令
  • [1] 使用Get-ChildItem 获取文件列表。 [2] 按适合您需要的任何标准对它们进行排序。 [3] 使用Select-Object-First-Last 参数来获取你想要的任意数量的文件。 [咧嘴一笑]
  • 感谢您的回答。源目录中的文件都是相同的文件类型。我随机想复制前 5 个文件。我也在用 c# 编写一个程序,我使用 powershell 将文件复制到远程服务器,所以我标记了两者。

标签: powershell


【解决方案1】:

这里有两个选择。一种是在Copy-Item cmdlet 中使用-Filter 参数,前提是您可以使用the FileSystem filter language 进行过滤。如果您的文件可以放置在子目录中(这些子目录在其文件树完好无损的情况下被复制),也可以使用参数-Recurse。但是如果你想说前 5 场比赛,你就不能使用它。

例子:

Copy-Item -Path "C:\source\Documents\" -Destination "C:\Program Files\target" -ToSession $session -Recurse -Filter "File*.txt"

如果您只需要选择我会找到的前 5 个文件(使用Get-ChildItem cmdlet),请先按照您的条件选择它们,然后再复制。 你可以这样做(文件将被复制到没有目录的目的地)

  1. 使用文件系统过滤器语言。此代码将在路径C:\source\Documents\ 中找到您的文件(仅文件),使用通配符(File*.txt)按名称过滤,选择前 5 个并将其从 $session 变量复制到远程计算机上的目标

     dir "C:\source\Documents\" -Filter "File*.txt" -Recurse -File | select -First 5 | Copy-Item -Destination "C:\Program Files\target" -ToSession $session
    
  2. 使用正则表达式模式过滤您的文件。此代码将在路径C:\source\Documents\ 中找到您的文件(仅文件),通过正则表达式模式对其进行过滤(如果您想区分大小写,请使用-match)-> FileXXX.txt,其中 XXX 是数字 0-9,选择前 5 个文件并将其从 $session 变量复制到远程计算机上的目标

      dir "C:\source\Documents\" -Recurse -File | ? {$_.Name -imatch "^File\d{3}.txt$"} | select -First 5 | Copy-Item -Destination "C:\Program Files\target" -ToSession $session
    

*如果要复制隐藏文件,请使用-Force参数。

【讨论】:

    【解决方案2】:

    尝试使用此 Copy-Item (gci "C:\source\Documents" | select -first 5).Fullname -Destination "C:\Program Files\target" -ToSession $session

    【讨论】:

    • 非常感谢。这有效:) 我知道我只要求这个,但是如何在 c# 代码中将它作为参数添加到 PSCommand 中。
    猜你喜欢
    • 2019-09-01
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 2020-10-26
    相关资源
    最近更新 更多