gpt4 book ai didi

powershell - 将具有特定扩展名的文件 move 到更高层次的文件夹中

转载 作者:行者123 更新时间:2023-12-03 01:07:26 26 4
gpt4 key购买 nike

我所有的文件都在特定的文件夹中:

17\1\1\PRO
17\1\2\PRO
17\2\1\PRO
xx\xx\xx\PRO
  • 17是年份(所以下一年是18,依此类推)
  • 第一个1是指定案例编号的文件夹(最多100个)。
  • 第二个1是案例编号的子部分。

  • 最后1个文件夹中有一个 PRO文件夹,所有数据都驻留在该文件夹中。

    我们需要移动这些文件,但是文件需要保留在各自的“PRO”文件夹中。

    例如:
  • 17\1\1\pro\xxx\www\中的文件需要转到17\1\1\pro\movies
  • 17\2\2\pro\xxdfsdf\eeee\中的文件需要转到17\2\2\pro\movies

  • 如果有要移动的文件,则应创建movies文件夹。

    我需要获取文件全名的一部分,然后将文件移到“电影”文件夹中。问题是我不知道如何分割全名,向其添加\ movies并将文件移动到那里。

    到目前为止,这是我的代码:
    Get-ChildItem -Path $mypath -Recurse -File -Filter $extension | select $_Fullname |
    Move-Item -Force -Destination ($_Fullname.Split("pro"))

    最佳答案

    如果您不知道有多少目录,我将执行以下操作:

    Get-ChildItem -Path $mypath -Recurse -File -Filter $extension | ForEach-Object {
    if ($_.FullName.IndexOf('\PRO\') -gt 0) {
    $Destination = Join-Path -Path $_.FullName.Substring(0,$_.FullName.IndexOf('\PRO\') + 5) -ChildPath 'movies';
    New-Item $Destination -ItemType Directory -ea Ignore;
    $_ | Move-Item -Destination $Destination;
    } else {
    throw ("\PRO\ path not found in '$($_.FullName)'");
    }
    }

    只要您的路径只有一次 \pro\,此方法就可以正常工作。如果像 customer\pro\17\pro\17\1\1\pro\xx\yy\zz\www那样不止一次,并且您需要最后一个索引,请使用 $_.FullName.LastIndexOf('\pro\')

    如果在 \pro\所在的目录之前和之后都有 .\pro\movies\目录,那么您很麻烦。您可能必须找到其他引用点。

    关于powershell - 将具有特定扩展名的文件 move 到更高层次的文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45591348/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com