하위 폴더를 반복하고 부모-폴더-파일 번호로 이름을 바꾸는 방법


0

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

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
윈도우? 리눅스?
Martin

답변:


3

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


고마워 PowerShell이 ​​아닌 일괄 처리를 많이 수행했습니다. 이것을 추가하려는 배치 스크립트가 있습니다.
user1087185

배치 스크립트에서 PowerShell 스크립트를 시작하려면 powershell "& '% ~ dp0 \ renameScript.ps1'"PS : PowerShell 스크립트 실행을 활성화하고 PS를 관리자로 시작한 다음 "Set-ExecutionPolicy RemoteSigned"를 입력하십시오 (이는 배치 스크립트에 추가 할 수도 있음
Martin

고마워 마틴 powershell을 실행하려고했습니다. PS를 시작하는 방법을 모른다?
user1087185
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.