Перемещение файлов по имени (с дополнительным усложнением) - PullRequest
0 голосов
/ 19 декабря 2018

Я видел несколько тем, показывающих, как перемещать файлы на основе их имен.У меня есть дополнительная проблема с этим вопросом.У меня есть куча видеофайлов, основанных на сериалах с
name of the series + season + episode number
Например: Breaking.Bad.s01e03
И мои файлы организованы так:

d:\series\breaking bad\season01
d:\series\breaking bad\season02
d:\series\breaking bad\season03
...
etc

Что яNeed - это скрипт, который проверяет имя серии + сезона и перемещает их в соответствующую папку.Возможно ли это?

заранее спасибо

1 Ответ

0 голосов
/ 19 декабря 2018

Мне стало скучно, и я решил ответить на ваш вопрос, даже если вы проигнорировали информацию "Как задать хороший вопрос" ... [ хмурится ]

ОП нуждается в этом длябыть нечувствительным к регистру - а метод .Replace() - нет.изменено использование оператора -replace.

$FileName = 'Breaking.Bad.S01e03'

$Series = $FileName.Substring(0, $FileName.LastIndexOf('.')).Replace('.', '_')
# disabled the initial version since the OP now needs case-insensitive replacement
#$Season = $FileName.Split('.')[2].Split('e')[0].Replace('s', 'Season')
$Season = $FileName.Split('.')[2].Split('e')[0] -replace 's', 'Season'

$Series
$Season

output ...

Breaking_Bad
Season01

Я оставлю вам процесс построения пути из вышеперечисленного И как перемещать файлы.[ ухмылка ] вот пара подсказок ...

Get-Help Join-Path
Get-Help Move-Item

ОП изменил весь формат файлов, так что это версия, которая работает с этим форматом,другие форматы не были заданы, поэтому другие форматы не были закодированы.

, если нужны другие форматы, и ОП не может их кодировать, задайте новый вопрос.

# fake reading in filenames
#    in real life, use Get-ChildItem
$FileList = @(
    [System.IO.FileInfo]'Breaking.Bad.S01E01.DVDRip.XviD-ORPHEUS.avi'
    [System.IO.FileInfo]'Breaking.Bad.s02E01.DVDRip.XviD-ORPHEUS.avi'
    [System.IO.FileInfo]'Breaking.Bad.S03e01.DVDRip.XviD-ORPHEUS.avi'
    [System.IO.FileInfo]'Breaking.Bad.s04e01.DVDRip.XviD-ORPHEUS.avi'
    )

foreach ($FL_Item in $FileList)
    {
    $SeriesName = ($FL_Item.BaseName -split '\.s\d')[0].Replace('.', '_')
    $SE_Info = $FL_Item.BaseName.Split('.')[-3] -split 'e'

    $Season = $SE_Info[0] -replace 's', 'Season'
    $Episode = 'Episode{0}' -f $SE_Info[1]

    $SeriesName
    $Season
    $Episode
    ''
    }

output ...

Breaking_Bad
Season01
Episode01

Breaking_Bad
Season02
Episode01

Breaking_Bad
Season03
Episode01

Breaking_Bad
Season04
Episode01

снова, я отсылаю вас к Join-Path, New-Item и Move-Item для создания путей назначения иперемещение файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...