2016-09-28 2 views
-1

내 네트워크에 무비 컬렉션 설정이 있고 모든 자막 파일의 이름을 같은 디렉토리에있는 영화의 이름과 동일하게 변경하려고합니다. 예를 들어 :파일의 이름을 디렉토리의 가장 큰 파일과 동일하게 변경하십시오.

2 Guns (2013).srt 

길고도 짧은 이야기, 나는 이러한 목표를 달성하기 위해 미디어 관리자의 모든 유형을 사용할 수 없습니다

D:\Movies\2 Guns (2013) (Bluray)\ 
-2 Guns (2013).mkv 
-English.srt 

나는 english.srt 파일을 원하는가에 이름을 바꿀 수 있습니다. 배치 파일이 좋겠지 만, 일종의 미디어 매니저가 아닌 한 PowerShell이나 타사 프로그램을 사용해도 좋습니다. 같은 이름의 파일 이름과 일치하지 않는 폴더 이름이 아니라 동일한 디렉토리에있는 가장 큰 파일을 기반으로 생성 된 이름이 필요합니다. 또한, .SRT 파일은 항상

편집 -

english.srt 이름이되지 않습니다 그래서 나는이 함께했다 :

@echo off 
setlocal enabledelayedexpansion 

for /F "delims=" %%A in ('dir /b *.mp4 *.avi *.mkv') do (
set basename="%%~nA" 
ren *.srt !basename!.eng.srt 
) 

이 아름답게 작동하지만이 어떻게 할 수 재귀 그래서 부모 디렉토리 대 한 하나씩 그것을 실행할 수 있습니까?

+0

'dir/B * .m * * .avi'와 같이'dir'에 여러 파일 패턴을 제공 할 수 있습니다. 그러나 코드는 위의 예제를 반영하지 않습니다. – aschipfl

+0

정말 고맙습니다! 너무 간단하고 간과했다. 내 예와 후속 질문을 수정했습니다. – Failstyle

+0

질문에 해결책을 포함하지 마십시오. 오히려 대답에 게시하십시오! – aschipfl

답변

0

그냥 dir /b ...에서 dir /b /s ...으로 변경하십시오. 이는 하위 디렉토리를 통해 반복됩니다.

이름을 바꾸는 전체 경로를 포함해야 할 수도 있습니다.


다음은 전체 스크립트입니다.

setlocal enabledelayedexpansion 

for /F "delims=" %%A in ('dir /b /s *.mp4 *.avi *.mkv') do (
    set basename="%%~nA" 
    ren "%%~dpA*.srt" "!basename!.eng.srt" 
) 

참고 ren 명령도 약간 변경했습니다.

처리 할 공백이 있으면 따옴표로 묶습니다. 또한 우리는 작업하고자하는 드라이브와 경로를 명확히하기 위해 %%dpA을 사용합니다.

+0

나는 손을 잡고 사과드립니다. 그러나 나는 솔직히 바꿀 것이 없습니다. dir 명령에 대해 제안한 것을 변경하고 ren 명령의 두 부분에 큰 따옴표를 사용했지만 아무런 도움이되지 않았습니다. 나는 delims를 통해 파일 이름에서 공백을 처리하는 방법을 간신히 알아 냈다. – Failstyle

+0

스크립트를 편집했습니다. 그게 작동하는지 확인하십시오. 그렇지 않다면 상위 디렉토리에서 'dir/b/s'를 실행하고 결과를 게시 할 수 있습니다. – FloatingKiwi

+0

좋아, 그 일은 아름답게! 정말 고맙습니다! 당신이 무엇을 바꿨는지 설명해 주셔서 감사합니다. 내가 주석을 달았을 때 나는 %% ~ dpA 밖에 놓치지 않았다. 그 부분은 내가 더 알아야 할 부분입니다! 저를 위해 더 읽고 다시 읽어 주셔서 감사합니다! – Failstyle

관련 문제