【问题标题】:Powershell - Organise Folders Based on NamePowershell - 根据名称组织文件夹
【发布时间】:2017-06-22 13:05:43
【问题描述】:

我一直在研究如何在powershell中仅根据名称将文件夹移动到子文件夹中,每个文件夹包含多个具有随机名称的图像。

文件夹的名称如下:

/bob.builder.housing.Project/
/racing.jenason.button.driver/
/working.project.bob.builder/
/f1.jenson.button.racing/
/instructions.bob.builder.house/
/random.not.matching/

我需要将这些文件夹名称与名称列表进行比较,如果匹配则移动文件夹

name.txt 包含...

bob.builder
jenson.button

新结构应如下所示:

/jenson.button/racing.jenason.button.driver/
/jenson.button/f1.jenson.button.racing/

/bob.builder/bob.builder.housing.Project/
/bob.builder/working.project.bob.builder/
/bob.builder/instructions.bob.builder.house/

/random.not.matching/

我不知道如何比较文件夹名称并根据它们移动到相应的文件夹中。

任何帮助将不胜感激。

【问题讨论】:

  • 以LS 开头,它是Get-ChildItem 的别名,然后通过管道将其传送到Get-Member,这应该足以搜索一些示例。以其中一个示例为例,使用 TEST 数据并发回您的想法。
  • gc 'r:\name.txt' | %{ mkdir "r:\$_" -force >$null; move "r:\*$_*" "r:\$_" -force -ea silent }

标签: powershell directory


【解决方案1】:

您可以使用以下代码。 它获取文件夹的名称,对于每个文件夹,它都会尝试创建该文件夹以防万一它不存在。然后,它将移动与其基本名称匹配的文件夹。

Get-Content 'names.txt' | ForEach-Object { 
    IF (-not (Test-path $_))
    {
        New-Item -Name $_ -ItemType Directory 
    }
    $foldername = Get-Item $_

    Get-ChildItem -Directory -Exclude $_ | ForEach-Object {
        IF ($_.BaseName -match  $foldername.basename  ) 
            {
                Move-Item  -Path $_ -Destination $foldername
            }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-27
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多