将文件名重复为文件夹,插入文件

时间:2017-07-16 20:43:53

标签: powershell

我正在尝试使用Powershell

  1. 扫描文件夹 D://媒体文件夹以获取媒体文件的名称

  2. 为扫描的每个媒体文件创建一个文件夹,名称相同

  3. 将每个媒体文件插入匹配的文件夹名称。

  4. 我找不到这方面的文档或帖子,而且我比Linux更流利的Linux。我已多次尝试将其拼凑在一起,但无济于事。

3 个答案:

答案 0 :(得分:0)

希望这会有所帮助:) 这将为每个具有相同名称的文件创建一个文件夹,因此如果您有一个名为xyz.txt的文件,它将创建一个名为xyz的文件夹并将该文件移动到该文件夹​​。

$path = "D:\MediaFolder"
$items = Get-ChildItem $path 
Foreach ($item in $items)
{
    $folderName = $item.name.Split('.')[0]
    New-Item "$path\$folderName" -ItemType Directory
    Move-Item -Path "$path\$item" -Destination "$path\$foldername"
}

答案 1 :(得分:0)

基于扩展程序的文件排序应该完成这项工作:

release

答案 2 :(得分:0)

这将遍历media_dir中的文件,并将media_types中包含扩展名的文件移动到具有相同基本名称的文件夹中。如果您对文件移动到正确的目录感到满意,请从-WhatIf语句中删除Move-Item

PS C:\src\t> type .\ms.ps1
$media_dir = 'C:\src\t\media'
$new_dir = 'C:\src\t\newmedia'
$media_types = @('.mp3', '.mp4', '.jpeg')

Get-ChildItem -Path $media_dir |
    ForEach-Object {
        $base_name = $_.BaseName

        if ($media_types -contains $_.Extension) {
            if (-not (Test-Path $new_dir\$base_name)) {
                New-Item -Path $new_dir\$base_name -ItemType Directory | Out-Null
            }
            Move-Item $_.FullName $new_dir\$base_name -WhatIf
        }
    }