【问题标题】:How to move set of files having multiple extension to another directory using PowerShell?如何使用 PowerShell 将具有多个扩展名的文件集移动到另一个目录?
【发布时间】:2019-12-14 15:59:44
【问题描述】:

我需要将一组具有不同扩展名的特定文件移动到另一个文件夹。

我在目录中有以下过滤文件。

文件1.txt 文件2.xml 文件3.dll

我已将上述文件保存在变量$files 中,我需要将每个文件移动到另一个文件夹。

下面是我试过的代码。

foreach ($fileType in $files) {
    Get-ChildItem -Path C:\Files -Filter "$fileType*." -Recurse |
        Move-Item -Destination C:\Dest
}

我收到以下错误

Get-ChildItem : 路径中的非法字符。 在行:1 字符:38 + ... lude_files){Get-ChildItem -Path C:\Files

是否有人可以提供帮助?

【问题讨论】:

  • 您发布的代码和示例数据不会引发该错误。请创建一个 minimal reproducible example 来演示您的问题,测试运行该代码以确保它确实演示了问题,然后 edit 您的问题并复制/粘贴 那个 代码以及完整该代码引发的错误。
  • 什么是 $filetype?
  • @js2010 循环变量。
  • 我们还没有收到您的来信.. 任何给定的答案是否解决了您的问题?如果是这样,请点击左侧的✓ 考虑accepting。这将帮助其他有类似问题的人更轻松地找到它。

标签: windows powershell


【解决方案1】:

一个简单的方法来做到这一点

ls C:\files | Foreach {
        Move-Item -Path C:\files\$filetype -Destination C:\dest
}

【讨论】:

  • 嗨@Modro,感谢您的回答。但是,这不起作用。它引发以下错误 Move-Item : An object at the specified path C:\Files\ does not exist 我尝试了许多已经发布的与此相关的选项,但没有任何东西对我有用。如果有任何方法可以将文件列表移动到另一个文件夹,请告诉我感谢您的帮助
【解决方案2】:

如果您之后的所有文件共享一个共同的“开头”名称,如您的示例中的file,则下面的内容应该可以满足您的需求。它使用-Include 参数,您可以在其中添加一组(在这种情况下)要查找的扩展。

Get-ChildItem -Path 'C:\Files' -Filter 'file*' -Include '*.txt','*.xml','*.dll' -Recurse |
    Move-Item -Destination 'C:\Dest'

注意:-Include 参数仅在与-Recurse 开关一起使用时才有效,或者在路径后附加\*(如C:\Files\*

【讨论】:

    猜你喜欢
    • 2014-06-18
    • 2020-04-11
    • 1970-01-01
    • 2018-01-30
    • 2018-03-13
    • 2015-06-12
    • 2019-09-26
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多