Вот мои папки:

Dexter\Season 1\season 1 ep 1  
Dexter\Season 1\season 1 ep 1  
Dexter\Season 2\season 1 ep 1  
Dexter\Season 2\season 1 ep 1  
Dexter\Season 3\season 1 ep 1  
Dexter\Season 3\season 1 ep 1  

Я сейчас в Dexter\

Что я хочу сделать, так это перебрать все вложенные папки в Dexter и переименовать все файлы соответственно:

Dexter\Season 1\season 1 ep 1 -> Dexter\Season 1\1x1

Как бы я поступил так?

1 ответ1

2

Так как я все равно трачу свое лето внутри, я мог бы также сделать что-нибудь полезное и написать сценарий для вас. Предполагая, что вы используете Windows, следующий сценарий PowerShell будет соответствовать вашему сценарию (просто сохраните файл в формате .ps1 и измените путь вверху).

$TVShowFolderPath = "X:\Series\Dexter";

$TVShowSeasons=$(get-childitem "$TVShowFolderPath");

foreach( $s in $TVShowSeasons)
{
    if( ($s.PSisContainer) -and ($s -imatch "^(Season )(\d{2}|\d{1})$") )
    {
        $season = $matches[2];
        write-host "Season $season";

        $episodes=$(get-childitem $s.FullName);

        foreach( $ep in $episodes)
        {
            if( $ep -imatch "^(season) (\d{2}|\d{1}) (ep) (\d{2}|\d{1})(.*)$")
            {
                $newName = "$($season)x$($matches[4])$($matches[5])";
                write-host "`tEpisode: `"$($ep.Name)`" --> `"$newName`"";
                Rename-Item $ep.FullName $newName;
            }
        }
    }
}

Если вы хотите проверить, правильно ли высовываются правильные имена, сначала закомментируйте строку, начинающуюся с «Rename-Item».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .