하위 폴더를 반복하고 부모-폴더-파일 번호로 이름을 바꾸는 방법 1 Dexter\Season 2\season 1 ep 1 Dexter\Season

내 폴더는 다음과 같습니다.

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

어떻게하면 되나요?



답변

어쨌든 내 여름을 낭비하고 있기 때문에 도움이되는 일을하고 대본을 쓸 수도 있습니다. 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”으로 시작하는 줄을 주석 처리하십시오.


답변