'The Kids Performances (2020).mp4'와 같은 파일 이름을 'Kids Performances, The (2020).mp4'로 바꾸는 일괄 명령

'The Kids Performances (2020).mp4'와 같은 파일 이름을 'Kids Performances, The (2020).mp4'로 바꾸는 일괄 명령

우리 가족은 수년에 걸쳐 아이들의 학교 공연과 과외 활동에 대한 녹음을 기본 .avi.mp4파일로 보관하고 있습니다. 저는 이 모든 파일(100개가 훨씬 넘음)을 가져와 Theor 라는 단어로 시작하는 모든 비디오에 레이블을 다시 지정 A하고 끝으로 이동하라는 요청을 받았습니다 .

예를 들어, 제목이 붙은 비디오 The Kids Performances (2020).mp4는 로 변경됩니다 Kids Performances, The (2020).mp4. 왜 그들이 The제목에 단어와 'A'를 유지하고 싶어하는지 전혀 모르겠지만 그들은 그렇습니다.

Windows를 사용하고 있는데 이 사이트의 게시판에서 The제목 시작 부분의 를 제거하는 데 사용할 수 있는 비교적 간단한 방법을 찾았지만 이전에 제목의 뒤로 이동하는 방법을 찾을 수 없습니다. 기록된 연도는 항상 (연도)로 표시됩니다.

내가 말하는 내용은 다음과 같습니다.

for %%i in ("*.mp4") do (set fname=%%i) & call :rename
goto :eof
:rename
::Cuts off 1st four chars, then appends prefix
ren "%fname%" "%fname:~4%"
goto :eof

이렇게 하면 제목에서 처음 4자를 일괄 형식으로 제거할 수 있지만 연도가 되기 전에 처음 4자를 제목 끝으로 이동하는 데 문제가 있습니다. 저는 가족들에게 제목에서 이 단어를 모두 빼달라고 간청했지만 설득할 수 없습니다.

이 목표를 달성하기 위한 더 쉬운 방법을 제공할 수 있도록 PC에도 Python을 설치했습니다. 도움을 주실 수 있는 분께 미리 감사드립니다!

답변1

파워셸쉽게 확장 가능한 기사 목록 및 확장 목록(우리는-whatIf테스트용으로 사용하고 나중에 삭제하여 변경 사항을 실행합니다.)

$ArticleList = @( 'A' , 'The' )
$ExtList     = @( '*.avi' , '*.mp4' )
# From folder with files
# Remove "-WhatIf" to execute after testing
gci $ExtList | 
   ? { $_.BaseName -match ( '^({0})\s(\.+)\s(\(\d+\))' -f ( $ArticleList -join '|' )) } | 
       ReName-Item -NewName { '{0}, {1} {3}{4}' -f $matches[2] , $matches[1] , $matches[3] , $_.Extension -WhatIf }

'^({0})\s(\.+)\s(\(\d+\))' -f ( $ArticleList -join '|' )

정규식을 생성합니다

'^(Article[0]|Article[1]{|...})\s(\.+)\s(\(\d+\))'

세 개의 일치하는 그룹이 있는 경우:

  • Article : ({0})
  • TitleTExt: \s(\.+)
  • (Year) : (\(\d+\))

새 이름을 구성하는 데 사용됩니다.

답변2

Keith Miller가 게시한 것과 같은 자동화된 솔루션은 아니지만 다른 스크립트를 작성하고 싶지 않을 만큼 충분한 cmd 스크립트를 작성한 사람으로서 Excel을 사용합니다.

  1. cmd 프롬프트를 열고 이름을 바꿀 파일이 있는 폴더로 이동합니다.
  2. dir /b | clip를 사용하여 (또는 dir /b /s | clip파일이 하위 디렉터리에 저장된 경우) 파일 이름 목록을 클립보드에 복사 하고 이를 Excel에 붙여넣습니다.
  3. 필요한 수식을 사용하여 새 파일 이름을 다른 열에 저장하십시오. 완전히 자동으로 수행할 수 없는 경우 필요한 경우 언제든지 수동으로 결과를 조정할 수 있습니다.
  4. 새 파일 이름이 만족스러우면 파일 이름을 하나씩 바꾸는 Excel 공식을 만드세요. 이 단계에서 시트는 다음과 유사하게 보일 수 있습니다.
이자형 에프 G
1 방식:
2 원본 파일 이름 접두사 년도 확대 파일 이름의 나머지 부분 새 파일 이름 명령
키즈 퍼포먼스 (2018).avi =IF(OR(UPPER(LEFT(A3;2))="A ";UPPER(LEFT(A3;4))="THE ");LEFT(A3;FIND(" ";A3)-1);" ") =MID(A3;FIND("(";A3)+1;4) =오른쪽(A3;3) =MID(A3;IF(B3="";1;LEN(B3)+2);LEN(A3)-LEN(B3)-LEN(C3)-LEN(D3)-IF(B3="";4 ;5)) =E3&IF(B3="";"";", "&B3)&" ("&C3&")."&D3 ="ren """&A3&""" """&F3&""""
4 썸키즈퍼포먼스(2019).mkv =IF(OR(UPPER(LEFT(A4;2))="A ";UPPER(LEFT(A4;4))="THE ");LEFT(A4;FIND(" ";A4)-1);" ") =MID(A4;FIND("(";A4)+1;4) =오른쪽(A4;3) =MID(A4;IF(B4="";1;LEN(B4)+2);LEN(A4)-LEN(B4)-LEN(C4)-LEN(D4)-IF(B4="";4 ;5)) =E4&IF(B4="";"";", "&B4)&" ("&C4&")."&D4 ="ren """&A4&""" """&F4&""""
5 더 키즈 퍼포먼스(2020).mp4 =IF(OR(UPPER(LEFT(A5;2))="A ";UPPER(LEFT(A5;4))="THE ");LEFT(A5;FIND(" ";A5)-1);" ") =MID(A5;FIND("(";A5)+1;4) =오른쪽(A5;3) =MID(A5;IF(B5="";1;LEN(B5)+2);LEN(A5)-LEN(B5)-LEN(C5)-LEN(D5)-IF(B5="";4 ;5)) =E5&IF(B5="";"";", "&B5)&" ("&C5&")."&D5 ="ren """&A5&""" """&F5&""""
1 값:
2 원본 파일 이름 접두사 년도 확대 파일 이름의 나머지 부분 새 파일 이름 명령
키즈 퍼포먼스 (2018).avi 2018 avi 어린이 공연 키즈 퍼포먼스, A (2018).avi ren "A Kids Performance (2018).avi" "키즈 퍼포먼스, A (2018).avi"
4 썸키즈퍼포먼스(2019).mkv 2019 mkv 썸 키즈 퍼포먼스 썸키즈퍼포먼스(2019).mkv ren "썸 키즈 퍼포먼스(2019).mkv" "썸 키즈 퍼포먼스(2019).mkv"
5 더 키즈 퍼포먼스(2020).mp4 그만큼 2020 mp4 어린이 공연 키즈 퍼포먼스, The (2020).mp4 ren "키즈 퍼포먼스(2020).mp4" "키즈 퍼포먼스, 더(2020).mp4"
  1. 계산된 명령(위의 예에서는 G3:G5)이 있는 셀을 선택하고 복사하여 클립보드에 넣은 다음 명령 프롬프트 창에서 마우스 오른쪽 버튼을 클릭하거나(마지막 줄에서 Enter를 눌러야 할 수도 있음) 클립보드를 붙여넣습니다. 빈 *.cmd 또는 *.bat 파일에 있는 내용을 이름 변경하려는 파일이 있는 폴더에 저장한 후 실행하세요.

관련 정보