Powershell - 根据名称组织文件夹

时间:2017-02-05 14:49:18

标签: powershell directory

我一直在研究如何根据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/

我无法弄清楚如何比较文件夹名称并根据它们移动到相应的文件夹中。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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
            }
    }
}