Windows의 특정 문자열 뒤에 있는 파일 이름의 문자를 삭제하는 가장 좋은 방법

Windows의 특정 문자열 뒤에 있는 파일 이름의 문자를 삭제하는 가장 좋은 방법

여러 문자가 포함된 파일 이름을 검색하고 그 뒤의 모든 문자를 삭제하는 빠르고 쉬운 방법이 있는지 궁금합니다.

예를 들어 다음과 같은 파일이 있는 경우:

Great Movie Title 2021 1080p asldkfjalfj.mkv
Another Great Movie 1997 480p aldfasdfa.avi
Boring movie but its ok 2015 720p asadfqwr.mp4

파일 이름에서 1080p, 720p,를 찾아 그 뒤의 모든 항목을 삭제하고 싶습니다 .480p

Windows Batch 루프를 사용할 수 있다는 것을 알고 있지만 For단일 문자만 사용하여 찾을 수 있습니다. 이 작업을 수행할 수 있는 타사 앱인 경우에도 찾을 수 없는 것 같습니다.

답변1

전체 드라이브를 검색하시나요, 아니면 단일 디렉터리만 검색하시나요?

어느 쪽이든 PowerShell이 ​​이를 처리할 수 있습니다.

이렇게 하면 전체 C 드라이브가 수행되며 파일 이름에 1080p가 포함된 모든 항목의 이름이 변경됩니다.

cd c:\
Get-ChildItem -recurse -include *1080p* | foreach-object { $name = $_.fullname; $newname = $name -replace '1080p.*\.','1080p.'; rename-item $name $newname } 

그런 다음 480p 및 720p에 대해 반복할 수 있습니다.

답변2

파워셸가는 길입니다.

한 번에 모두 가져오고 쉽게 수정할 수 있는 또 다른 접근 방식이 있습니다.

이는 최상위 폴더에서 실행됩니다. 이렇게 하면 -Path(여기서의 위치) 매개변수가 여러 파일 형식으로 필터링할 수 있게 됩니다. -Path와 달리 는 -Filter값 배열을 사용할 수 있기 때문입니다.

Get-ChildItem *.mkv, *.avi, *.mp4 -Recurse | ForEach {
    If ( $_.BaseName -match '^.+(1080p|720p|480p)' ) {
        Rename-Item -LiteralPath $_.FullName -NewName ( $matches[0] + $_.Extension )
    }
}

정규식은 '^.+(1080p|720p|480p)'파일 이름의 시작부터 "or'd"( |) 확인 문자열 중 하나를 포함하여 모든 문자와 일치합니다. 해당 텍스트는 $matches자동 vafable에 저장되며 새 이름을 구성하는 데 사용됩니다.

관련 정보