我正在尝试使用Powershell
扫描文件夹 D://媒体文件夹以获取媒体文件的名称
为扫描的每个媒体文件创建一个文件夹,名称相同
将每个媒体文件插入匹配的文件夹名称。
我找不到这方面的文档或帖子,而且我比Linux更流利的Linux。我已多次尝试将其拼凑在一起,但无济于事。
答案 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
}
}