Заказать файлы через powershell - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть главная папка, в которой находятся другие папки с файлами .mkg. Эти папки имеют определенный формат.

Папка = NameSer ie .SxEy.Randomstuf

Элемент в папке = NameSer ie .SxEy.Randomstuf.mkv

Где x - номер сезона, а y - номер эпизода.

Я хочу автоматически создать папку, если nameSer ie еще не создан, и поместить файлы .mkv в эту папку.

Итак, если у нас есть папки с именем NameSer ie .SxEy.Randomstuf, мы проверяем, существует ли папка NameSer ie, если не создаем ее. Затем мы вводим папку NameSer ie .SxEy.Randomstuf и копируем файл NameSer ie .SxEy.Randomstuf.mkv в папку NameSer ie.

имя файла необходимо изменить с NameSer ie .SxEy.Ra.n [dom} stuf.mkv для NameSer ie .SxEy.mkv, но я не могу понять, как удалить случайную вещь после NameSer ie .SxEy. <> .Mkv

Это код, который мне удалось создать, но я все еще застрял. Мне удалось создать папку, если она не существует, но это работает, только если файл .mkv отсутствует в папке.

$Location = "\\<ip>\Share\Media\Series"

#rename files
Get-ChildItem $Location | Rename-Item -NewName {$_.Name.Replace(" [480p]","") }


#make folder for serie if it does not exist
Get-ChildItem "$Location\*.mkv" | 
Foreach-Object {

    $FullName = $_.Name
    $pos = $FullName.IndexOf(" - ")
    $Name = $FullName.Substring(0, $pos)

    Write-Host $_.FullName


    $TARGETDIR = "$Location\$Name"

    if( -Not (Test-Path -Path $TARGETDIR ) )
    {
        New-Item -ItemType directory -Path $TARGETDIR
    }

    Move-Item -Path $_.FullName -Destination $TARGETDIR

}

1 Ответ

0 голосов
/ 15 февраля 2020

Вы можете использовать параметр -Recurse, когда вы выводите список файлов по указанному пути:

Get-ChildItem "$Location\*.mkv" -Recurse

вместо:

Get-ChildItem "$Location\*.mkv"

С параметром -Recurse скрипт будет перечислять файлы в текущем каталоге и для каждого каталога в текущем каталоге он будет делать то же самое рекурсивно. Так что .mkv внутри других папок больше не будет скрываться.

...